Migração Primefaces 3.0 gerando bugs

75 respostas
F

galera migrei recentemente minha aplicação que estava no inicio com 2.2.1 para o primefaces final 3.0 mas estou encontrando varios bugs, desde questao de layout a funcionamento dos componentes.

Um deles é quando utilizo o modal no p:dialog ele inativa todos os p:inputText do meu dialog, fazendo assim com que eu nao consiga editar nada nos campos, eu ja retirei o dialog do layout pois desde a versao 2 nao funciona corretamente, mas outros componentes como por exemplo o p:pickList funciona normalmente.

Esta da seguinte maneira

<p:tabView id="pnlDados"> <p:tab title="Geral"> <h:panelGrid columns="2"> //aqui todos os componentes p:inputText ficam inativos, aprensentam valor mas nao posso editar

isso tudo fica dentro

layout
         layoutUnit
               layout
                    layoutUnit

seria algum problema em colocar um layout dentro de um layoutUnit na versao 2.2.1 fuincionava sem problemas.

Outra coisa o tabView quando abro esse dialog ele traz todas as abas tab em uma unica, e depois que clico nas abas ae normaliza trazendo o conteudo correto em cada uma, esses sao alguns dos bugs que estou tentando resolver para normalizar a aplicação novamente mas nao estou conseguindo.

Alguem esta passando pelos mesmos problemas?

75 Respostas

C

pois é cara, há 2 meses comecei um projeto aqui, como a versão 3 do prime estava para ser lançada, até comecei a usar ela, mas já encontrei vários problemas tipo esses que vc citou, até mesmo componentes da versão 2, que tinham atributos x, y e z na versão 3 não tem mais, só tem x e y, ai lógicas baseadas nesse terceiro atributo são perdidas por conta de q os caras tiraram o atributo forçando vc a rever várias coisas, por isso comecei o projeto então na versão 2, depois de um mes, tentei novamente usar a versão 3, e devido a tantos encomodos dexei a versão 2 e vou colocar no ar semana q vem com a versão 2 mesmo…

I

tive problemas com o dialog, onde ele nao comportava direito, e problemas com commandButton no IE 8+

e o problema de tudo isso, era porque tinha um h:form dentro de outro h:form

outro problema como dialog, resolvi trocando a posicao dele, coloquei no final de tudo, tente mudar a posicao dele, dentro de diferentes tags e vai fazendo os testes

F

Entao o dialog eu monto fora de tudo, quanto aos form eu crio form dentro dos componentes entao nunca fica form dentro de um form.

quanto ao problema que descrevi, percebi que no primefaces 3 esta com problemas ao utilizar um p:layout dentro do dialog em modal, tirei o layout de dentro do modal e funcionou certo, isso nao acontecia na versao 2.2.1, estou pensando seriamente em deixar de lado a 3 e ficar na versao 2 mesmo que esta mais estavel, o problema é depois se precisar migrar ficar mais complicado, gostaria de aproveitar que a aplicação esta no inicio para fazer isso para continuar com a versao nova

F

igor_ks:
tive problemas com o dialog, onde ele nao comportava direito, e problemas com commandButton no IE 8+

e o problema de tudo isso, era porque tinha um h:form dentro de outro h:form

outro problema como dialog, resolvi trocando a posicao dele, coloquei no final de tudo, tente mudar a posicao dele, dentro de diferentes tags e vai fazendo os testes

Cara tenho problema tambem com o commadButton no ie8 e ie7 mesmo com o primefaces 2.2.1, como voce resolveu?

I

dessa forma que expliquei, tirei os h:form aninhados…

eu tinha forms nos templates e mais form no xhtml… tirando isso resolveu

F

ah sim, entao estranho que eu ja faço isso, mas tranquilo vou pesquisar sobre isso, acabei parando com a migracao para o primefaces 3 por questao de tempo e bugs, vou aguardar

J

por esse e outros que vou esperar o Prime ficar estável
hehe

G

Também estou na tentativa de migrar para o PF3. Mas já estou ficando meio cansado, quando parece que você fechou todos os problemas de compatibilidade, aparece outro e mais outro, e assim vai… Acho que vou seguir na versão anterior.

Abaixo alguns dos problemas que enfrentei/enfrento:

[list]Lazy dataTable se perde em um bean “ConversationScoped”, porém estando em “ViewScoped” funciona normalmente;[/list]
[list]Tive também problemas com a propriedade update em partial requests, como relato nesse tópico;[/list]
[list]Quando um InputText não passa pela validação ele fica com uma borda vermelha. Porém mesmo depois de ele passar pela validação ou você dar um refresh, ele continua com a borda vermelha;[/list]

Algumas coisas eles resolveram como a duplicação de dialogs em submits de forms. Agora isso não acontece mais.

É uma pena, fiz um esforço grande para migrar porém cansei. Acho que vou esperar versões mais estáveis.

C

dando continuidade a conversa…

bom pessoal, agora q saiu a versão estavel, podemos conversar mais a fundo, comecei um projeto aqui usando o PF3, mas como o bom programdor que sou, nunca lembro as coisas de cabeça e tenho q sair revirando meus códigos antigos, logo percebi algumas diferenças entre o PF 2 e o 3

  1. componente p:messages nao aceita mais
    no seu conteudo, ou seja, algumas lógicas tem q ser mudadas para exibir as mensagens corretamente
  2. componente p:calendar nao aceita mais as configurações do 2.2.1 como mostra o exemplo abaixo<p:calendar value="#{cadastrarPessoa.pessoa.dtNascimento}" locale="pt_BR" pattern="dd/MM/yyyy" navigator="true" style="width: 125px;font-size: 11px" effect="slideDown"/>fica tudo em ingles e a fonte nao é alterada
  3. a propriedade closeOnScape do p:dialog nao existe mais

eu sei q nao são coisas que vao causar o fim do mundo, mas acabam gerando um trabalho “a mais” pra quem usa a ferramenta, e pelo menos eu nao gosto de ficar resolvendo coisas duas vezes, por hora vou continuar usando o PF3, e vou continuar postando as diferenças que encontrar…

o que vcs tem enfrentado ai de problemas ?

C

caso alguem tenha dificuldade com o calendar, a solução é criar um arquivo chamado locale-primefaces.js, eu deixei em \resources\js\locale-primefaces.js com o seguinte conteudoPrimeFaces.locales['pt_BR'] = { closeText: 'Fechar', prevText: 'Anterior', nextText: 'Próximo', currentText: 'Começo', monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', 'Jul','Ago','Set','Out','Nov','Dez'], dayNames: ['Domingo','Segunda','Terça','Quarta','Quinta','Sexta','Sábado'], dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], dayNamesMin: ['D','S','T','Q','Q','S','S'], weekHeader: 'Semana', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: '', timeOnlyTitle: 'Só Horas', timeText: 'Tempo', hourText: 'Hora', minuteText: 'Minuto', secondText: 'Segundo', ampm: false, month: 'Mês', week: 'Semana', day: 'Dia', allDayText : 'Todo o Dia' };e dai importar nas paginas que se deseja usar<script src="./resources/js/locale-primefaces.js" type="text/javascript"></script>o componente em propriamente dito<p:calendar value="#{cadastrarPessoa.pessoa.dtNascimento}" locale="pt_BR" pattern="dd/MM/yyyy" navigator="true" style="width: 125px;font-size: 11px" effect="slideDown"/>

L

vi esse tópico e vou postar aki msm, estou kse voltando pro 2.21 pq o 3.01 axo q vai me atrasar, pq o ui:composition naum funciona neste e como uso muito como resolveram essa parada?

C

pois é, como eu disse, comecei um projeto novo aqui usando PF3, estou usando a mesma logica de login, e acessos do usuario que usei em outro projeto com PF2, e vcs nao vao acreditar, mas eu ja gastei 2 dias tentanto fazer o login funcionar, o login coisa simples, é assim:

pagina index.xhtml tem lá usuario e senha e botão acessar, uma vez funciona, abre a pagina inicial com o menu do cara td certinho, ai eu clico no botão sair, e ele simplesmente nao faz nd, nao executa o metodo logout no meu managed bean, ele até volta pra index.xhtml, mas continua lá o nome de usuario q ele digitou, sendo que no metodo logout eu limpo td, usuario da sessão, atributo relacionado com o campo nome, do mesmo jeito q faço no projeto com PF2, igualzinho, e dai se eu tentar fazer login denovo, o botão acessar tbem nao funciona mais, nao executa o metodo login, agora vou dormir e quando acordar vou tentar denovo fazer funcionar, tentar identificar algo de errado, mas nao vou gastar mais do que 1 hora, se nao funcionar, vou voltar pro PF 2…

cara, tah dando muito problema o PF3, tah locu…, 2 dias perdidos com um botão de login e outro de logout, pelo amor de deus !!!

C

eu acredito q nao seja bug do PF3, mas sei lá, tentei procurar algo sobre mudanças do funcionamento dos componentes, e nao achei nd, dai complica…

L

isso msm voltei pro 2.21…

C

como o colega disse no post anterior, o lazy do datatable nao está funcionando tbem, to até com medo de fazer um monte de coisas e chegar na hora de implementar uma consulta meio parruda e nao funcionar, kkk melhor voltar pro 2 enquanto nao tem muita coisa feita.

C

a versão 3 nao manteve compatibilidade, esse é o problema…

C

outra coisa que reparei foi referente ao p:password, ele se limpa automaticamente após um submit, por exemplo, um cadastro de usuario, se clicar no botão cadastrar e nao passar pela validação, o campo se fica vazio, sem a senha digitada, no PF2 isso nao acontece

C

hahaha bom como eu disse, vou continuar relatando os problemas, e mais um: nao consigo nem debugar meu projeto, quer dizer, até consigo, mas tenho que tirar todos os breakpoints, mandar debugar e quando carregar o site, eu vou lá coloco os breakpoint e dai funciona… se tiver algum breakpoint ele nao inicia o projeto…

sei lá, deve ser alguma configuração que a gnt ainda nao descobriu, algo no web.xml sei lá, to pesquisando esse tipo de coisas agora… se descobrir ja colo aqui na hora

C

meu genésio, de tanto que fucei agora nao funciona mais nd, kkk

C

propriedade update tbem nao é mais como antes, http://www.guj.com.br/java/262390-problema-propriedade-updateprimefaces-3–facelets–ids-aninhados

C

poxa ninguem responde, vcs tao conseguindo usar a versão 3 sem problemas ?

L

amigo, axo q ngm está usando, eu msm voltei atrás…muita incompatibilidade…o meu primeiro problema com o <ui:composition e dá voltei pra trás…

G

Pessoal,

eu tive alguns problemas com o PF3, porém estou conseguindo trabalhar normalmente agora. O único problema era os ids aninhados.

Tudo funcionando, desde LazyDataTable até login. Prestem atenção para o fato que foi relatado por mim mesmo à respeito dos IDs aninhados. Tentem verificar os IDs gerados nos fontes e utilizá-los.

G

Abaixo segue como estão minha dependências de projeto até o momento:

[INFO] ± org.glassfish:javax.servlet:jar:3.0:provided
[INFO] ± org.glassfish:javax.ejb:jar:3.1:provided
[INFO] | ± org.glassfish:javax.transaction:jar:3.1:provided
[INFO] | - org.glassfish:javax.annotation:jar:3.1:provided
[INFO] ± javax.el:javax.el-api:jar:2.2.4:compile
[INFO] ± com.sun.faces:jsf-api:jar:2.1.3-b02:compile
[INFO] ± com.sun.facelets:jsf-facelets:jar:1.1.14:compile
[INFO] ± javax.validation:validation-api:jar:1.0.0.GA:provided (scope not updated to compile)
[INFO] ± javax.enterprise:cdi-api:jar:1.0:provided
[INFO] | ± org.jboss.interceptor:jboss-interceptor-api:jar:1.1:provided
[INFO] | - javax.annotation:jsr250-api:jar:1.0:provided
[INFO] ± org.primefaces:primefaces:jar:3.0:compile
[INFO] ± org.primefaces.themes:aristo:jar:1.0.1:compile
[INFO] ± org.primefaces.themes:black-tie:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:blitzer:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:bluesky:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:casablanca:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:cupertino:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:dark-hive:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:dot-luv:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:eggplant:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:excite-bike:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:flick:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:glass-x:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:hot-sneaks:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:humanity:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:le-frog:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:midnight:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:mint-choc:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:overcast:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:pepper-grinder:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:redmond:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:rocket:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:sam:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:smoothness:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:south-street:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:sunny:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:swanky-purse:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:trontastic:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:ui-darkness:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:ui-lightness:jar:1.0.2:compile
[INFO] ± org.primefaces.themes:vader:jar:1.0.2:compile
[INFO] ± org.hibernate:hibernate-entitymanager:jar:4.0.0.Final:compile
[INFO] | ± org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile
[INFO] | ± dom4j:dom4j:jar:1.6.1:compile
[INFO] | ± org.hibernate:hibernate-core:jar:4.0.0.Final:compile
[INFO] | | ± antlr:antlr:jar:2.7.7:compile
[INFO] | | ± com.fasterxml:classmate:jar:0.5.4:compile
[INFO] | | - org.jboss:jandex:jar:1.0.3.Final:compile
[INFO] | ± org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile
[INFO] | ± org.jboss.logging:jboss-logging:jar:3.1.0.CR2:compile
[INFO] | ± org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile
[INFO] | - javassist:javassist:jar:3.12.1.GA:compile
[INFO] ± org.hibernate:hibernate-validator:jar:4.2.0.Final:compile
[INFO] | - org.slf4j:slf4j-api:jar:1.6.1:compile
[INFO] ± org.apache.commons:commons-lang3:jar:3.0.1:compile
[INFO] ± commons-collections:commons-collections:jar:3.2.1:compile
[INFO] ± net.sf.jasperreports:jasperreports:jar:4.1.2:compile
[INFO] | ± commons-beanutils:commons-beanutils:jar:1.8.0:compile
[INFO] | ± commons-digester:commons-digester:jar:1.7:compile
[INFO] | ± commons-logging:commons-logging:jar:1.0.2:compile
[INFO] | ± com.lowagie:itext:jar:2.1.7:compile
[INFO] | | ± bouncycastle:bcmail-jdk14:jar:138:compile
[INFO] | | ± bouncycastle:bcprov-jdk14:jar:138:compile
[INFO] | | - org.bouncycastle:bctsp-jdk14:jar:1.38:compile
[INFO] | | ± org.bouncycastle:bcprov-jdk14:jar:1.38:compile
[INFO] | | - org.bouncycastle:bcmail-jdk14:jar:1.38:compile
[INFO] | ± jfree:jcommon:jar:1.0.15:compile
[INFO] | ± jfree:jfreechart:jar:1.0.12:compile
[INFO] | ± xml-apis:xml-apis:jar:1.3.02:compile
[INFO] | ± eclipse:jdtcore:jar:3.1.0:compile
[INFO] | ± org.codehaus.castor:castor:jar:1.2:compile
[INFO] | - org.apache.poi:poi-ooxml:jar:3.6:compile
[INFO] | ± org.apache.poi:poi:jar:3.6:compile
[INFO] | | - log4j:log4j:jar:1.2.13:runtime
[INFO] | - org.apache.poi:poi-ooxml-schemas:jar:3.6:compile
[INFO] | ± org.apache.xmlbeans:xmlbeans:jar:2.3.0:compile
[INFO] | | - stax:stax-api:jar:1.0.1:compile
[INFO] | - org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:jar:1.0:compile
[INFO] ± org.codehaus.groovy:groovy-all:jar:1.8.3:compile
[INFO] ± joda-time:joda-time-hibernate:jar:1.3:compile
[INFO] ± joda-time:joda-time:jar:2.0:compile
[INFO] ± com.mysema.querydsl:querydsl-apt:jar:2.3.0:provided
[INFO] | - commons-io:commons-io:jar:2.1:provided
[INFO] ± com.mysema.querydsl:querydsl-jpa:jar:2.3.0:compile
[INFO] | - com.mysema.querydsl:querydsl-core:jar:2.3.0:compile
[INFO] | ± net.sourceforge.collections:collections-generic:jar:4.01:compile
[INFO] | ± com.mysema.commons:mysema-commons-lang:jar:0.2.2:compile
[INFO] | ± com.mysema.codegen:codegen:jar:0.4.5:compile
[INFO] | ± net.sourceforge.findbugs:jsr305:jar:1.3.2:compile
[INFO] | ± javax.inject:javax.inject:jar:1:compile
[INFO] | - cglib:cglib:jar:2.2:compile
[INFO] | - asm:asm:jar:3.1:compile
[INFO] ± org.apache.shiro:shiro-core:jar:1.1.0:compile
[INFO] ± org.apache.shiro:shiro-web:jar:1.1.0:compile
[INFO] - com.h2database:h2:jar:1.3.162:provided

G

Agora o componente password tem a propriedade “redisplay”, setando pra true ele mostra o valor depois do submit.

Atualmente uso a versão 3.x em um projeto de médio porte e esta “tranquilo”, no começo usaríamos a 2.x e ainda bem que optamos pela 3 senão a migração futuramente seria um inferno pelo que leio :lol:

G

Foi exatamente isso que pensei…

C

pois é Granella, mas eu comecei o meu projeto do zero tbem usando o PF3, e estou tendo todas essas dificuldades, meu projeto agora até parou de funcionar, nem login consigo fazer mais, a navegação parou…

talvez o problema é q eu fui copiando muito código do projeto antigo de uma só vez, e acabei nao percebendo onde foi a cagada, acho q vou recomeçar e fazer com mais calma as coisas ao invés de copiar…

como está configurado o web.xml de vcs ? pelo q percebi tem umas particularidades, parece q <servlet> <servlet-name>Resource Servlet</servlet-name> <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class> </servlet> não existe mais, parece q agora tem q ser org.primefaces.application.PrimeResource isso procede ? vi isso aqui http://www.patternizando.com.br/2011/04/projeto-jsf-2-0-com-primefaces-3-0-m1/ nos comentarios, mas nao intendi direito

L

estou começando a me animar, mas no momento meu sistema está em produção e naum terei tempo de corrigir td…

C

pois é luxu, hahah vendo respostas de pessoas q estao tendo sucesso tbem estou mais animado…

G

cleiton herrmann:
pois é Granella, mas eu comecei o meu projeto do zero tbem usando o PF3, e estou tendo todas essas dificuldades, meu projeto agora até parou de funcionar, nem login consigo fazer mais, a navegação parou…

talvez o problema é q eu fui copiando muito código do projeto antigo de uma só vez, e acabei nao percebendo onde foi a cagada, acho q vou recomeçar e fazer com mais calma as coisas ao invés de copiar…

como está configurado o web.xml de vcs ? pelo q percebi tem umas particularidades, parece q <servlet> <servlet-name>Resource Servlet</servlet-name> <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class> </servlet> não existe mais, parece q agora tem q ser org.primefaces.application.PrimeResource isso procede ? vi isso aqui http://www.patternizando.com.br/2011/04/projeto-jsf-2-0-com-primefaces-3-0-m1/ nos comentarios, mas nao intendi direito

Pois é, o que matou foi a compatibilidade, tinha ate um wiki da migração da 2 pra 3 mas não ajuda em muito não.

Sobre registrar essa servlet não precisa mais, e foi descontinuado http://forum.primefaces.org/viewtopic.php?f=3&t=9317&p=35940&hilit=org.primefaces.resource.ResourceServlet#p35940

C

boas noticias, kkkk

re-comecei o projeto com calma, e ao invés de sair copiando e colando código q nem loco, fui copiando e colando aos poucos, e testando sempre… e pra falar a verdade nao descobri o problema, pois o código continua sendo o mesmo, a unica coisa mais significativa q fiz, que costuma resolver problemas de outro mundo, foi desimplantar todos os projetos do meu tomcat e implantar novamente, dai td funcionou, a navegação de login e logout, verificação de acessos, paginas inexistentes, erros internos, td sendo tratado do mesmo jeito que fiz no projeto com PF2, agora parece q vai render

vlw pessoal, qq coisa volto a postar aqui t+

C

é verdade Granella, eu tinha visto a wiki de migração tbem, e concordo q nao ajuda

C
voltando... achei um probleminha e nao to conseguindo resolver, eu tinha o seguinte textarea com contador de caracteres
<p:inputTextarea id="informacoes" 
    style="width:650px;height:200px;" 
    maxHeight="200"
    effectDuration="400" 
    value="#{anunciarVeiculo.veiculo.informacoesExtras}" />
<script>$("#informacoes").counter({msg: ' caracteres restantes.',goal: 1024});</script>
dai na tag h:head eu só importava o script
<script src="./resources/js/jquery.counter-2.1.js" type="text/javascript"></script>
<script type="text/javascript">$ = jQuery;</script>
e no PF2 isso funcionava normal, mas agora no 3 nao esta funcionando, alguem tem idéia do motivo ?
C
se eu fizer assim, trocando # por . e usando a propriedade styleClass
<p:inputTextarea id="informacoes"
    style="width:650px;height:200px;" 
    styleClass="informacoes"
    value="#{cadastrarPropriedade.propriedade.observacoes}" >
</p:inputTextarea>
<script>$(".informacoes").counter({msg: ' caracteres restantes.',goal: 1024});</script>
até funciona, mas ele coloca um label exibindo a contagem emcima e outro embaixo do textarea, e só o de baixo funciona
C
consegui fazer funcionar, mas achei algo meio esquisito, usei a opção inspecionar elemento do google chrome e vi q o primefaces estava acrescentando '_input' no id do meu text area ficando id="observacoes_input" e o script estava só com observacoes... mas o código gerado é o seguinte
<span id="informacoes" name="informacoes">
    <textarea style="left: -99999px; position: absolute; top: -99999px; letter-spacing: normal; line-height: normal; text-decoration: none; width: 650px; height: 0px; " class="ui-inputfield ui-inputtextarea ui-widget ui-state-default ui-corner-all ui-inputtextarea-resizable" tabindex="-1"></textarea>

    <textarea id="informacoes_input" name="informacoes_input" style="width: 650px; resize: none; height: 200px; overflow-x: hidden; overflow-y: hidden; " class="ui-inputfield ui-inputtextarea ui-widget ui-state-default ui-corner-all ui-inputtextarea-resizable"></textarea>

    <div id="informacoes_input_counter">
        <span id="informacoes_input_count">1009</span>  caracteres restantes.
    </div>
</span>

<div id="informacoes_input_counter">
    <span id="informacoes_input_count">1009</span>  caracteres restantes.
</div>
e o código na pagina.xhtml esta assim
<p:inputTextarea id="informacoes"
    style="width:650px;height:200px;" 
    value="#{cadastrarPropriedade.propriedade.observacoes}" >
</p:inputTextarea>
<script>$("#informacoes_input").counter({msg: ' caracteres restantes.',goal: 1024});</script>
pq está duplicado ?
G

Qual versão esta usando? Aqui esta gerando somente 1 e sem o span.

C

então granella, eu to com JSF 2.1, Mojarra 2.1.1 e PrimeFaces 3.0.1, pelo q eu tenho percebido, aqui pra mim, até com a versão 2.2.1 ele gera bastante a tag span mas nunca tinha visto assim duplicado…

G

Cleiton é a versão 3.0.1 que esta gerando uma tag a mais dentro de um span, isso foi removida da 3.1 ficando somente a tag do textarea.
Aqui já estamos usando a 3.1 RC (em testes) por isso disse que estava gerando somente 1.

R

Eu fiz a migração recentemente.
Eu tive que fazer três alterações no meu código, para ficar filé.

Eu tinha contextmenu ligado aos meus datatable, para incluir registros, na versão 3 ele funciona diferente, se o datatable estiver vazio ele não é chamado, então como eu ia inserir um registro? Para resolver isto eu abandonei o contextmenu e criei um footer no datatable com 1 commandlinks para cada item do meu contextmenu.

O closeOnEscape do Dialog também foi retirado, não entendi o porquê.

o growl não é chamado várias vezes, criando aquela lista enorme do lado direito da tela.

Os componentes password, calendar e autocomplete não respeitam mais o style informado, o optimus.prime, o lead do projeto, disse que ele não ia colocar o style de jeito nenhum e mandou eu ver o dom gerado, dom é o Data Object Model, mas eu olhei e não entendi nada.

O Aristo agora é o tema padrão, e foi reescrito, tive problemas com o visual do MenuBar, mas depois percebi que o que estava zuando o barraco eram as divs criadas pelo Layout, arranquei o Layout e ficou perfeito.

Resumindo,para resolver meus problemas eu baixei a tag 3.0 do repositório do primefaces, implementei o closeOnEscape no Dialog, e implementei o style nos componentes que não tinham, fiz umas alterações no schedule também.
Agora estou feliz, com 100% funcionando.

Abraços

C
meu deus do céu, que zica, eu to desde as 8:30 da manha (agora é 13:10) tentando usar o selectonemenu do PF3, e ele simplesmente nao funciona, então voltei atras dos meus códigos do PF2 e tentei usar o seguinte no xhtml
<h:selectOneMenu id="propriedades" 
                                 value="#{cadastrarCultura.propriedadeSelecionada}"
                                 style="font-family: Tahoma;font-size: 11px;width: 150px;height: 20px;">
                    <f:selectItems value="#{cadastrarCultura.listaPropriedades}" />        
                    <p:ajax event="change" 
                            onstart="dlg.show();"
                            oncomplete="dlg.hide();"
                            listener="#{cadastrarCultura.calcularAreaDisponivel()}"
                            update="dadosPropriedade" />
                </h:selectOneMenu>

<p:dialog header="Aguarde" widgetVar="dlg" modal="true" width="250" height="70" closable="false" resizable="false" >  
            <h:form id="frmAtualizandoDados" prependId="false">
                <h:panelGrid columns="2">
                    <h:outputText value="Atualizando dados !" />
                    <p:graphicImage value="/imagens/carregando.gif"  style="border: 0px;"/>
                </h:panelGrid>
            </h:form>
        </p:dialog>
no managed bean
private Propriedades propriedadeSelecionada;
    
    private List<Propriedades> propriedades = new ArrayList<Propriedades>();
    
    private List<SelectItem> listaPropriedades = new ArrayList<SelectItem>();

//getters e setters

private void buscarPropriedades() {
        propriedades.clear();
        Criteria c = hu.getCriteria(Propriedades.class);
        c.add(Restrictions.eq("proprietarioIdproprietario", proprietario));
        propriedades = dao.listarCriteria(c);
        hu.commitTransaction();
        
        listaPropriedades.add(new SelectItem("", ""));
        for (Propriedades p : propriedades) {
            listaPropriedades.add(new SelectItem(p.getIdPropriedades().longValue(), p.getDescricao()));
        }
    }

public void calcularAreaDisponivel() {
        System.out.println("entrou no calcular");
        if (propriedadeSelecionada != null) {
            System.out.println("calculou: " + propriedadeSelecionada.getDescricao());
        } else {
            System.out.println("propriedade null");
        }
    }
e ele nao executa o metodo calcularAreaDisponivel nem com reza... esse código é o que eu uso em outro projeto com PF2 e funciona perfeito, lembrando q eu tentei usar o selectonemenu do PF3 com converter e td mais, mas tbem nao consegui, estou sem o código agora pq apaguei, mas vou tentar novamente e coloco aqui logo mais...

mas primeiro... vou atualizar pra versão 3.1 RC
vlw pessoal t+

C

hahaha la vai eu fazer mais alteraçoes pra funcionar depois de mudar pra 3.1RC1

javax.faces.FacesException: Cannot find component with identifier “dadosPropriedade” in view

e mais, no p:inputtextarea nao tem mais as tags:
maxHeight=“50”
effectDuration=“400”

poxa eu to fazendo td do jeito errado, ou sei lá, os caras nao podem ficar tirando coisas assim…

C
pessoal, após mudar pro 3.1RC1 nao tah mais carreagando as paginas, eu tenho
<h:form id="frmCadastrarPropriedade" prependId="false" >
    <p:panel id="dadosPropriedade" header="Cadastro/Alteração da propriedade" style="width: 991px;height: 290px;"> 

        varios outros componentes e

        <p:commandButton action="#{cadastrarPropriedade.salvar()}" 
            value="Salvar" 
            update="dadosPropriedade,validacao,tabelaPropriedades" 
            style="font-size: 12px"/>
    </p:panel>
</h:form>
e quando tento navegar para esta pagina a seguinte excessao é lançada
SEVERE: Error Rendering View[/cadastrarPropriedade.xhtml] javax.faces.FacesException: Cannot find component with identifier "dadosPropriedade" in view.
o que está errado ? com a versão 3.0.1 estava funcionando normal...
C
ai meu deus, eu nao acredito nisso, até a versão 3.0.1 os ids de componentes que estavam faltando eram mostrados como warnings, ja na 3.1 são mostrados como exceptions, logo eu tive que fazer em todos os atributos update da pagina a seguinte alteração
update="dadosPropriedade"

para

update=":nomeDoForm:dadosPropriedade"
sacanagem, além de aumentar as tags update e ficar pior pra ler, eu tive q sair alterando td...

agora voltando ao problema do selectonemenu, continuo nao conseguindo executar o metodo no evento onchange

C
vejam só, xhtml
<p:selectOneMenu value="#{cadastrarCultura.propriedadeSelecionada}" effect="fade" converter="propriedadeConverter">  
    <f:selectItem itemLabel="Select One" itemValue="" />  
    <f:selectItems value="#{cadastrarCultura.propriedades}" var="pro" itemLabel="#{pro.descricao}" itemValue="#{pro}"/>  
</p:selectOneMenu>
                
<p:commandButton actionListener="#{cadastrarCultura.calcularAreaDisponivel()}" value="teste" update=":frmCadastrarCultura:dadosPropriedade" />
managed bean
public void calcularAreaDisponivel() {
        System.out.println("entrou no calcular");
        if (propriedadeSelecionada != null) {
            System.out.println("calculou: " + propriedadeSelecionada.getDescricao());
        } else {
            System.out.println("propriedade null");
        }
    }
ele lista as propriedades no selectonemenu bunitinho, mas nao executa o metodo calcularArea nem com um commandbutton, nem com p:ajax nem com nd

tah faltando alguma coisa ? alguma particularidade do PF3 sei lá ?

G

Nossa Cleiton não sei de onde esta saindo esses erros, tudo isso que mostrou funciona normal e estou na RC1.

Sobre as exceptions de não encontrar o id do componente esta na especificação do JSF e o primefaces não implementava dessa forma, agora a partir da 3.1 passará lançar a exception.

G

Esses componentes são renderizados dentro da tag span então o style fica aplicado ao span e não ao componente em si, para aplicar nesses componentes vc deve usar css assim: .seuEstilo > input[type="password"] para o password e o restante type="text", a unica coisa da para setar direto é o size do resto fica tudo aplicado no span

C
até q enfim em partes hahaha, consegui chamar o bendito metodo através de ajax, mas só seguindo ao pé da letra este exemplo [url]http://www.primefaces.org/showcase-labs/ui/pprSelect.jsf[/url] se eu tentar usar List ao invés de Map ou tentar usar um converter com um List nao vai nem a pau...
<p:selectOneMenu id="propriedades" value="#{cadastrarCultura.propriedade}">  
    <f:selectItem itemLabel="Select City" itemValue="" />  
    <f:selectItems value="#{cadastrarCultura.listaPropriedades2}" />  
    <p:ajax update="dadosPropriedade"  
        listener="#{cadastrarCultura.handleTeste()}" />  
</p:selectOneMenu>
private String propriedade;
private Map<String,String> listaPropriedades2 = new HashMap<String, String>();  

//getters e setters

private void buscarPropriedades() {
        propriedades.clear();
        Criteria c = hu.getCriteria(Propriedades.class);
        c.add(Restrictions.eq("proprietarioIdproprietario", proprietario));
        propriedades = dao.listarCriteria(c);
        hu.commitTransaction();
        
        listaPropriedades.add(new SelectItem("", ""));
        for (Propriedades p : propriedades) {
            listaPropriedades.add(new SelectItem(p.getIdPropriedades().longValue(), p.getDescricao()));
            listaPropriedades2.put(p.getIdPropriedades().toString(), p.getDescricao());
        }
    }
reparem q eu tentei usar SelectItem, ele até exibe as propriedades, mas a requisição ajax nao vai...
C
o segundo selectonemenu executa a requisição ajax mas o primeiro nao, o primeiro executa o metodo de conversão do objeto, mas o handleTeste não o problema é q eu nao queria usar um map de string, eu queria trabalhar com objetos...
<p:selectOneMenu id="propriedades2" value="#{cadastrarCultura.propriedadeSelecionada}" converter="propriedadeConverter">  
                    <f:selectItem itemLabel="Select City" itemValue="" />  
                    <f:selectItems value="#{cadastrarCultura.propriedades}"/>  
                    <p:ajax update="dadosPropriedade" listener="#{cadastrarCultura.handleTeste()}" />  
                </p:selectOneMenu>

                <p:selectOneMenu id="propriedades" value="#{cadastrarCultura.propriedade}">  
                    <f:selectItem itemLabel="Select City" itemValue="" />  
                    <f:selectItems value="#{cadastrarCultura.listaPropriedades2}" />  
                    <p:ajax update="dadosPropriedade" listener="#{cadastrarCultura.handleTeste()}" />  
                </p:selectOneMenu>  

<p:outputPanel id="dadosPropriedade" >
    <p:inputText value="#{cadastrarCultura.teste}" />
</p:outputPanel>
private Propriedades propriedadeSelecionada;
private String propriedade;
private List<Propriedades> propriedades = new ArrayList<Propriedades>();
private Map<String,String> listaPropriedades2 = new HashMap<String, String>();  

//getters e setters

private void buscarPropriedades() {
    propriedades.clear();
    Criteria c = hu.getCriteria(Propriedades.class);
    c.add(Restrictions.eq("proprietarioIdproprietario", proprietario));
    propriedades = dao.listarCriteria(c);
    hu.commitTransaction();
        
    for (Propriedades p : propriedades) {
        listaPropriedades2.put(p.getIdPropriedades().toString(), p.getDescricao());
    }
}

public void handleTeste() {  
    teste = "ebaaaaaaaa2";
}
L

Meio [OFF] mas vamos lah estou implementando no meu projeto os confirmdialog mas percebi uma coisa a validação dos campos vem depois de ter confirmado a inserção e eu gostaria que fosse antes de chamar o confirmdialog como proceder, tipow antes de apresentar o confirmdialog validar os campos?

C

tava dando uma olhada geral em td que fiz já, e percebi que o contador do inputtextarea tinha sumido kkkkk e adivinha, aquele ‘_input’ que na versão 3.0.1 estava sendo acrescentado ao id do componente, agora na versão 3.1 não é mais então tive q tirar ele do código<style> #observacoes_counter { font-size: 12px; } </style> <p:inputTextarea id="observacoes" style="width: 870px;height:50px;font-size: 12px;" value="#{cadastrarPropriedade.propriedade.observacoes}" /> <script>$("#observacoes").counter({msg: ' caracteres restantes.',goal: 370});</script>e agora com a versão 3.1 realmente não está mais duplicado meu textarea granella

C

luxu, nao sei como q é sua lógica, mas tava aqui pensando e acho q vc poderia fazer algo ± assim, no botão que vai submeter o form, chamar uma action de validação, e no oncomplete desse botão exibir o dialog que vai ter o botão que vai chamar outra action para salvar ou fazer qq outra coisa

L

essa action de validação nada mais são do q o required do <h:inputtext> e o oncomplete está dentro do commandbutton e todos no msm <h:form> saka?

C

ah tah, entendi luxu, pois é dai eu nao sei como, a minha sugestão é pro caso de validar mais coisas…
quem sabe o atriibuto immediate, mas tbem nunca usei…

C

enquanto isso eu vou perdendo tempo com mais um commandbutton que nao executa sua action…

C
meu deus do céu, alguem me explica por favor pq isso nao funciona
<h:form id="frmCadastrarCultura" prependId="false" >

    outros componenetes

    <p:commandButton id="teste" action="#{cadastrarCultura.testar()}" value="Teste" />
</h:form>
public void testar() {
    System.out.println("testando");
}
o estranho é q isso esta acontecendo na pagina de cadastro de culturas somente, mas nas paginas de cadastro de proprietario e proriedades isso nao ocorre, e elas tem praticamente a mesma estrutura
R

Granella:
Raiduster:

Os componentes password, calendar e autocomplete não respeitam mais o style informado, o optimus.prime, o lead do projeto, disse que ele não ia colocar o style de jeito nenhum e mandou eu ver o dom gerado, dom é o Data Object Model, mas eu olhei e não entendi nada.

Esses componentes são renderizados dentro da tag span então o style fica aplicado ao span e não ao componente em si, para aplicar nesses componentes vc deve usar css assim: .seuEstilo > input[type="password"] para o password e o restante type="text", a unica coisa da para setar direto é o size do resto fica tudo aplicado no span

eu não manjava esta mano, acabei alterando o fonte para setar o style!!!

C
tem q ter alguma coisa errada no meu projeto, o botao da pag cadastrarCultura nao executava a action né, blz eu deletei a pagina e o managed bean, criei outra pagina e coloquei só um botão chamando a actin teste, blz funcionou, mas quando eu tento acrescentar outros componentes como o selectonemenu ou simplesmente um outputtext, eles nao aparecem na pagina
<h:form id="frmCadastrarCultura" prependId="false" >
            <p:panel id="dadosCultura" header="Cadastro/Alteração da cultura" style="width: 991px;height: 290px;">
                <p:commandButton value="Teste" action="#{cadastrarCultura.teste()}" />
                
                <p:selectOneMenu id="propriedades" value="#{cadastrarCultura.propriedade}">  
                    <f:selectItem itemLabel="Selecione uma propriedade" itemValue="" />  
                    <f:selectItems value="#{cadastrarCultura.listaPropriedades}" />  
                </p:selectOneMenu>
                
                <h:outputText value="kjghkhgh" />
            </p:panel>
        </h:form>
o atributo propriedade está declarado no managed com seus devidos get/set e listaPropriedades tbem, nao tem segredo isso, é a coisa mais simples do mundo, e simplesmente nao vai...
C

to começando a achar que é o tomcat que tah causando esses problemas, pois hj qq alteração q eu faça nas paginas nao esta sendo atualizada no servidor, quando executo o projeto a versao antiga aparece…

C

após desimplantar, implantar, parar, iniciar o tomcat várias vezes, e reiniciar o computador, eis q num passe de mágica a bendita pagina de cadastro de culturas funcionou… qui bruxaria mano, tah locu…

R

Sempre pare o tomcat, dê um clean, um clean workspace e limpe o cache do navegador mano.

C

sempre faço isso Raiduster, desde o segundo ano da faculdade ± a 6 anos atras hahahaha

apesar de que isso não é necessário, pois eu eu costumo trabalhar sem parar o tomcat, eu uso o netbeans, e ao salvar o projeto, ele compila e implanta automaticamente pra mim, é só ir no browser e dar um f5, e td funciona, tanto na alteração dos arquivos xhtml, quanto em alterações nos managed beans…

mas nesses casos que nd funciona eu sempre faço as coisas manualmente, e é sériu, eu tinha feito isso umas 20 vezes já, e nd de funcionar…

mas agora voltou a render as coisas por aqui, vamos ver até quando, estou aguardando anciosamente pelo próximo problema hahahah

C

cara, simplesmente nao acredito nisso, foi escrever o post anterior e os commandbuttons pararam de funcionar, agora a po*@$ ficou séria, nao vou dormir enquanto nao descobrir o q estou fazendo de errado hahahha

C
descobri um detalhe que fez os botoes funcionarem, mas pra mim é algo novo, nunca tinha usado e ainda nao consegui compreender o pq.... através da opção inspecionar elemento, percebi que o atributo process estava sendo gerado com o valor @all. vou tentar explicar...
<p:commandButton value="testar" action="#{cadastrarCultura.testar()}"/>

<p:selectOneMenu id="propriedades" value="#{cadastrarCultura.propriedade}">  
                    <f:selectItem itemLabel="Selecione uma propriedade" itemValue="" noSelectionOption="true"/>  
                    <f:selectItems value="#{cadastrarCultura.listaPropriedades}" />  
                    <p:ajax onstart="dlg.show();" 
                            oncomplete="dlg.hide();" 
                            update="dadosPropriedade"
                            listener="#{cadastrarCultura.calcularAreaDisponivel()}" />  
                </p:selectOneMenu>
o botão testar, funciona se eu selecionar uma propriedade no selectonemenu, mas ele nao tem nd a ver, ele executa uma action separada de td a logica, e se eu nao selecionar uma propriedade ele nao chama a action
public void testar() {
        System.out.println("testou ok");
    }
ai se eu colocar o atributo process="@this" no commandbuton ele funciona independente de ter selecionado ou não uma propriedade, nao intendi o pq...

o problema de colocar @this no botão de salvar é que os dados do formulario ou seja, da cultura que deve ser gravada, nao sao submetidos

C

desisto, to perdendo muito tempo com esses detalhes… voltei pro 2, depois quando nao tiver tao apurado, ainda mais agora depois de 2 fds e uma semana sem praticamente sair do lugar, eu volto a mecher com o 3

C

vcs nao vao acreditar, mas eu consegui hahahha refiz usando PF2 td o que eu fiz durante a semana, gastei umas 2 horas pra isso, e quando cheguei na bendita tela de culturas, tive o mesmo problema, ai eu pensei, *#$%&@ q q eu to fazendo de errado nessa pagina, percebi que os botoes salvar, limpar e aquele botao de teste, nao funcionavam se eu nao tivesse selecionado uma propriedade no selectonemenu, mas se eu tivesse selecionado todos os 3 botoes passavam a funcionar, lembrando que o selectonemenu de propriedades executa uma action que faz alguns calculos e da um update num panel e mostra alguns dados para o usuario.

Resolvi então separar este selectonemenu e o panel de informacoes sobre a propriedade do resto da pagina, coloquei eles dentro do seu proprio h:form e o resto dentro de outro h:form, ai td passou a funcionar, inclusive no projeto com PF3, mas nao consigo entender o pq, acredito q seja algum problema na fase de restore view, pois quando eu tentava salvar sem selecionar uma propriedade, a propriedade era null, então os componentes ligados a ela nao podiam exibir seus conteudos, separando com outro form, os dados da propriedade nao sao submetidos, e o metodo salvar passava executar normalmente fazendo as devidas validacoes antes de salvar e atualizando o p:messages na pagina para o usuario, acho q deve ser isso…

mas como eu ia adivinhar se nenhum erro era mostrado, se nenhuma exception era lançada… nao sei se era isso mesmo o problema, mas é o q consigo calcular no momento… vcs devem estar de cara já comigo postando tanto assim, mas trabalhar sabado e domingo sozinho aqui no quarto nao é facil, preciso de alguem pra desafar, kkkk

agora então, vou continuar no projeto PF3…

G

Cara, tome cuidado pois com JSF as vezes você não passa para outras fases porque tem alguma coisa errada na estrutura de componentes. Coloque um breakpoint no método service do FacesServlet e tente acompanhar cada ação que você esta com “problema” e veja até onde vai a chamada.

Isso que você esta enfrentando provavelmente não é problema do PF3, até sugeriria que você criasse um outro tópico.

Você esta usando BeanValidation?

C

é giulianocosta, com certeza que não é problema do PF3, os caras nao iam colocar algo pra download se nao estivesse funcionando, até foi esse o motivo de eu nao desistir de usar hahahha…

legal, nao manjava essa do breakpoint no método service, vou começar a usar, vlw

esses “problemas” que eu to enfrentando, ou melhor, estava, são algumas mudanças que foram feitas no funcionamento do PF3 em relação ao 2, mas agora ja peguei as moral do PF3 nesses detalhes, ja fiz várias coisas aqui, consegui evoluir bastante.

essa parada do selectonemenu por exemplo, fazer com que meus botões nao funcionassem se ele estivesse sem um valor selecionado, vcs podem achar que é uma coisa besta que eu to fazendo errado, mas olhem em http://www.centralgaragens.com.br no painel de pesquisa, a quantidade de selectonemenus que tem, e eles estão no mesmo form do botao pesquisar, alias a pagina inteira está no mesmo form, e td funciona em perfeita harmonia.

o outro detalhe de ter q colocar :nomeDoForm:idDoComponente nos atributos update, na verdade só é necessário fazer dessa forma quando você quer atualizar um componente que esta em outro form, caso contrario, só é necessário o idDoComponente…

Vlw ai a todos pela força !

L

por favor como faço isso?

G

por favor como faço isso?

Cara, se tu ta usando o eclipse basta startar o debug do tomcat e abrir a classe FacesServlet e colocar o breakpoint no método service…

B

resolvi o problema da tabView qua abria todas as abas tab em uma unica, adicionando o propriedade dynamic=“true”

<p:tabView  dynamic="true"/>

por enquanto tah funfanu

W

Vocês chegaram a enfrentar algume problema do p:selectOneMenu perder o valor selecionado após fazer o submit button?

Estou com esse problema há mais de 2 dias sem encontrar uma solução.

Os selectOneMenu estão dentro de uma p:tabView

G

weder.vierra:
Vocês chegaram a enfrentar algume problema do p:selectOneMenu perder o valor selecionado após fazer o submit button?

Estou com esse problema há mais de 2 dias sem encontrar uma solução.

Os selectOneMenu estão dentro de uma p:tabView

Nunca passei por esse problema…

M

weder.vierra:
Vocês chegaram a enfrentar algume problema do p:selectOneMenu perder o valor selecionado após fazer o submit button?

Estou com esse problema há mais de 2 dias sem encontrar uma solução.

Os selectOneMenu estão dentro de uma p:tabView

weder.vierra,

Estou com um problema parecido com o seu. No meu caso, tenho um tabView(dynamic=true) com 3 abas. Uma das abas começa desabilitada e quando preciso habilita-la tenho que dá um update no tabView inteiro, nesse momento, os meus selectOneMenu perdem os valores já selecionados anteriormente.

Você conseguiu alguma solução?

Estou tentando encontrar a solução, qualquer coisa, posto aqui. Vlw!

W

Marlon,

A solução para o seu caso é não renderizar toda a tabView, já que os dados ainda não foram atualizados no MB.

Nesse caso faça update apenas na tab que você precisa habilitar

M

weder,

A idéia era essa mesma, a questão é que quando faço isso, atualizar apenas a tab, o conteúdo dela é exibido na tab o qual estou no momento, entende?

Por isso preciso atualizar o tabView, de modo q a outra aba fique habilitada, mas, sem mostrar o conteúdo ainda…só quando eu clicar nela.

Criado 6 de janeiro de 2012
Ultima resposta 2 de ago. de 2012
Respostas 75
Participantes 11