JSF Formulário Avançado
Olá,
Estou tentando implementar um formulário em jsf com ajax, tenho diversos campos para preencher, porém um deles e o nome de uma pessoa, que esta cadastrado em uma tabela. Quero fazer uma busca nesta tabela e exibir o nome com os demais dados da pessoa que localizei.
Tentei da seguinte forma:
formulário.xhtml
<h:form id=frmCad>
<h:outputLabel value=#{i18n[ativo.ti.listar.table.head.nome]} styleClass=outputText for=itName/>
<h:inputText id=itName value=#{ativoTiBean.ativoTi.fdNome} styleClass=inputText
required=true validator=#{ativoTiBean.checkUniqueFornNome}
requiredMessage=#{i18n[parametro.tipoinst.adicionar.form.label.name.required]} size=3 maxlength=30/>
....DEMAIS CAMPOS DO FORMA
<h:panelGrid id=panelTeste columns=2>
<h:outputLabel id=otResp value=Informe o nome ou matricula: for=itResp/>
<h:inputText id=itResp size=20 value=#{ativoTiBean.nomeFunc}/>
<h:message for=itResp styleClass=messageError/>
</h:panelGrid>
<h:commandButton id=btnFindRespAtivo action=#{ativoTiBean.teste} value=Buscar>
<f:ajax event=keyup execute=panelTeste render=otTextoAlterado/>
</h:commandButton>
<h:outputText id=otTextoAlterado value=#{ativoTiBean.nomeFunc}/>
</h:form>
BEAN
public void teste(){
nomeFunc = Copiado via ajax o nome: + nomeFunc;
}
Mas toda vez que executo e clico no botão para buscar para testar o ajax ele critica todos os campos do meu form, dizendo que não preenchi ele. Isto sei que tem haver com o ciclo de vida do JSF, onde ele estaria validando todos os campos do form antes do envio para a próxima fase. Mas como corrijo este problema.
Obrigado pela atenção.
Estou tentando implementar um formulário em jsf com ajax, tenho diversos campos para preencher, porém um deles e o nome de uma pessoa, que esta cadastrado em uma tabela. Quero fazer uma busca nesta tabela e exibir o nome com os demais dados da pessoa que localizei.
Tentei da seguinte forma:
formulário.xhtml
<h:form id=frmCad>
<h:outputLabel value=#{i18n[ativo.ti.listar.table.head.nome]} styleClass=outputText for=itName/>
<h:inputText id=itName value=#{ativoTiBean.ativoTi.fdNome} styleClass=inputText
required=true validator=#{ativoTiBean.checkUniqueFornNome}
requiredMessage=#{i18n[parametro.tipoinst.adicionar.form.label.name.required]} size=3 maxlength=30/>
....DEMAIS CAMPOS DO FORMA
<h:panelGrid id=panelTeste columns=2>
<h:outputLabel id=otResp value=Informe o nome ou matricula: for=itResp/>
<h:inputText id=itResp size=20 value=#{ativoTiBean.nomeFunc}/>
<h:message for=itResp styleClass=messageError/>
</h:panelGrid>
<h:commandButton id=btnFindRespAtivo action=#{ativoTiBean.teste} value=Buscar>
<f:ajax event=keyup execute=panelTeste render=otTextoAlterado/>
</h:commandButton>
<h:outputText id=otTextoAlterado value=#{ativoTiBean.nomeFunc}/>
</h:form>
BEAN
public void teste(){
nomeFunc = Copiado via ajax o nome: + nomeFunc;
}
Mas toda vez que executo e clico no botão para buscar para testar o ajax ele critica todos os campos do meu form, dizendo que não preenchi ele. Isto sei que tem haver com o ciclo de vida do JSF, onde ele estaria validando todos os campos do form antes do envio para a próxima fase. Mas como corrijo este problema.
Obrigado pela atenção.
Alexandre Pires
Curtidas 0
Respostas
Davi Costa
01/06/2012
troca e deixa assim:
<h:commandButton id=btnFindRespAtivo action=#{ativoTiBean.teste} value=Buscar immediate=true autosubmit=true>
<f:ajax event=keyup execute=panelTeste render=otTextoAlterado/>
</h:commandButton>
Adicionando essas propriedades immediate=true autosubmit=true, os campos obrigatórios serão desconsiderados
att Davi
<h:commandButton id=btnFindRespAtivo action=#{ativoTiBean.teste} value=Buscar immediate=true autosubmit=true>
<f:ajax event=keyup execute=panelTeste render=otTextoAlterado/>
</h:commandButton>
Adicionando essas propriedades immediate=true autosubmit=true, os campos obrigatórios serão desconsiderados
att Davi
GOSTEI 0
Alexandre Pires
01/06/2012
Cara o ajax esta funcionando legal, eu uso essa tag immediate=true para o botão cancelar das minhas aplicações, mas sinceramente não imaginei em usa-lá neste caso. Porém a tag autosubmit=true não apareceu disponível para uso. Qual a função desta tag e para usa-lá é preciso adicionar alguma outra biblioteca?
GOSTEI 0
Davi Costa
01/06/2012
se não estiver disponível e vc resolveu seu problema, n se preocupa... ela é um atributo de h:commandButton...
não precisaria adicionar mais nada... deve depender de versão do jsf... enfim
att Davi
não precisaria adicionar mais nada... deve depender de versão do jsf... enfim
att Davi
GOSTEI 0
Alexandre Pires
01/06/2012
Davi, ao dar seguimento nos testes, percebi que por não estar submetendo o form eu não consigo obter o valor digitado pelo usuário no inputbox para seguir com a minha pesquisa. Teria alguma forma de obter o valor digitado pelo usuário?
GOSTEI 0
Davi Costa
01/06/2012
hmmm, teria que ver bem na calma.
Mas lembro de já ter passado por isso, acabei tirando os requireds e tratanto o preenchimento do campo no Controller.
Mas é bem interessante ver o porque no seu controller não chega os valores digitados pelo usuário.
att Davi
Mas lembro de já ter passado por isso, acabei tirando os requireds e tratanto o preenchimento do campo no Controller.
Mas é bem interessante ver o porque no seu controller não chega os valores digitados pelo usuário.
att Davi
GOSTEI 0