validação jsf condicionalmente necessária em forma a4j
Pergunta
Estou tendo um pequeno problema com o uso de expressão condicional avaliada em jsf / a4j
Aqui está o meu código
<a4j:form>
<h:inputText id="id1" value="#{mybean.myvalue}" size="1"
required="#{not mybean.condition}"
rendered="#{not mybean.condition}"
requiredMessage="Put a number in here" />
<h:selectBooleanCheckbox value="#{mybean.condition}">
<a4j:support event="onclick" reRender="id1"/>
</h:selectBooleanCheckbox>
<a4j:commandButton action="#{mybean.myaction}" value="Do something" />
</a4j:form>
A caixa de seleção booleana condicionalmente habilitar / desabilitar a validação.
Isso não funciona: o a4j:. CommandButton simplesmente ignorar a validação
Graças.
Solução
Se o inputText falha de validação (Processo fase de validações), então o valor mybean.condition não será atualizado (fase Atualizações Processo). Como o campo de texto utiliza a necessário atributo, isso é bastante provável.
Ciclo de Vida do doc RichFaces:
(fonte: jboss.org )
Se qualquer fase JSF falhar, os saltos de ciclo de vida para Render Response para evitar a operar na entrada inválida. Você pode usar o h: mensagem e h: mensagens marcas a vista relatados erros (embora porque você está usando AJAX, você terá que colocá-los em algo que vai ser re-processado.
Eu estou supondo que se você definir o ajaxSingle atributo no AJ4: apoio tag, você deseja obter o comportamento desejado. A documentação diz que isto só irá enviar o valor para o controle, de modo que o campo de texto não será envolvido no Aplicar pedir valores / processo atualiza validações / Processo fases.
Outras dicas
O que é o escopo da mybean? Se é escopo da solicitação, em seguida, seu valor será reposto quando você clica no botão e o campo de entrada pode ser processado em tudo (se tornado resolve a 'falso').