Problemas Combo Dinâmicos JSF

2 respostas
D

Pessoal,

Estou com um problema com combos que possuem action (através do a4j:support) e no mesmo form possui campos com requered. O t:selectOneMenu está dentro de um a4j:region para eu não ter problemas com a phase de validação, ok?

Quando clico no botão que submete os dados para Bean e ocorre um erro na phase de validação, a tela começa a não funcionar direito. Pois ao selecionar outra opção do combo, os campos que são atualizados pela seleção deste combo não são atualizados mais. Já verifiquei que o action deste combo continua a funcionar, apenas os valores dos campos que não se alteram mais.

Segue o trecho do código:

<t:outputLabel value="Grupo:" title="Selecione o grupo na qual o item pertencerá" />
<t:panelGroup colspan="2">
	<a4j:region>
		<t:selectOneMenu value="#{administracaoMenuBean.item.grupo}" styleClass="label" converter="entityConverter">
			<f:selectItems value="#{administracaoMenuBean.grupos}" />
			<a4j:support event="onchange" action="#{administracaoMenuBean.getProximaOrdemMenuItem}" />
		</t:selectOneMenu>
	</a4j:region>
</t:panelGroup>

<t:outputLabel value="Item:" for="novoItem" title="Descrição do item que aparecerá no menu" />
<t:inputText id="novoItem" value="#{administracaoMenuBean.item.descricao}" required="true" requiredMessage="Descrição do item obrigatório." size="30" />
<h:message for="novoItem" styleClass="mensagem" />

<t:outputLabel value="Link:" for="linkNovoItem" title="Link do item" />
<t:inputText id="linkNovoItem" value="#{administracaoMenuBean.item.link}" required="true" requiredMessage="Link do item obrigatório." size="50" />
<h:message for="linkNovoItem" styleClass="mensagem" />

<t:outputLabel value="Ordem:" for="ordemNovoItem" title="Ordem de exibição no menu" />
<t:inputText id="ordemNovoItem" value="#{administracaoMenuBean.item.ordem}" required="true" requiredMessage="Ordem do item obrigatório." size="2" maxlength="3">
	<f:validator validatorId="LongValidator" />
</t:inputText>
<h:message for="ordemNovoItem" styleClass="mensagem" />

Acredito que seja algum problema com as phases. Alguém consegue me ajudar?

Obrigado!

2 Respostas

A

Tente colocar algo no atributo reRender do a4j:support.

<a4j:support event="onchange" action="#{administracaoMenuBean.getProximaOrdemMenuItem}" reRender="novoItem,linkNovoItem,ordemNovoItem" />
D

Obrigado pelo retorno. Eu já havia tentado com o reRender, mas sem sucesso.

O reRender dos demais valores dos campos após o evento onchange do combo funciona perfeitamente até eu realizar um submit. Meu problema é que após o submit, a phase de validação é acionada, os erros são exibidos (no caso de eu provocar o erro propositalmente por não preencher os campos obrigatório) e a partir daí o reRender nos campos param de funcionar ao mudar a seleção do combo. Mas o método do a4j:support continua sendo acionado, apenas os valores dos campos que não são atualizados.

Como estou achando que seja problema devido as fases do ciclo de vida do jsf, existe a possibilidade de eu voltar pra fase 2 (Apply Request Values)? Também nem sei se o problema é este e se funcionará.

Obrigado.

Criado 6 de novembro de 2009
Ultima resposta 11 de nov. de 2009
Respostas 2
Participantes 2