Migração Primefaces 3.0 gerando bugs

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[code]<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>[/code]no managed bean[code]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©;
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”);
}
}[/code]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+

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…

pessoal, após mudar pro 3.1RC1 nao tah mais carreagando as paginas, eu tenho[code]<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>[/code]e quando tento navegar para esta pagina a seguinte excessao é lançada[quote]SEVERE: Error Rendering View[/cadastrarPropriedade.xhtml]
javax.faces.FacesException: Cannot find component with identifier “dadosPropriedade” in view.[/quote]o que está errado ? com a versão 3.0.1 estava funcionando normal…

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[code]update=“dadosPropriedade”

para

update=":nomeDoForm:dadosPropriedade"[/code] 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

vejam só, xhtml[code]<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" />[/code]managed beanpublic 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á ?

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.

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

até q enfim em partes hahaha, consegui chamar o bendito metodo através de ajax, mas só seguindo ao pé da letra este exemplo http://www.primefaces.org/showcase-labs/ui/pprSelect.jsf se eu tentar usar List ao invés de Map<String, String> 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>[code]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©;
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());
    }
}[/code]reparem q eu tentei usar SelectItem, ele até exibe as propriedades, mas a requisição ajax nao vai...

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…[code]<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>[/code][code]private Propriedades propriedadeSelecionada;
private String propriedade;
private List propriedades = new ArrayList();
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©;
hu.commitTransaction();

for (Propriedades p : propriedades) {
    listaPropriedades2.put(p.getIdPropriedades().toString(), p.getDescricao());
}

}

public void handleTeste() {
teste = “ebaaaaaaaa2”;
}[/code]

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?

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

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

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?

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…

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

meu deus do céu, alguem me explica por favor pq isso nao funciona[code]<h:form id=“frmCadastrarCultura” prependId=“false” >

outros componenetes

<p:commandButton id="teste" action="#{cadastrarCultura.testar()}" value="Teste" />

</h:form>[/code]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

[quote=Granella][quote=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.

[/quote]

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[/quote]

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

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[code] <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>[/code]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...

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…

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…