私は次のコードを持っています:
<h:form>
<h:inputText id="inputField" value="#{bean.myProperty}">
<f:validateLongRange
minimum="#{bean.minimum}"
maximum="#{bean.maximum}"/>
</h:inputText>
<h:commandButton id="submit" value="Submit" >
<f:ajax execute="inputField" render="outputField errors" />
</h:commandButton>
<h:outputText id="outputField" value="#{bean.myPropertyFormatted}"/>
<h:message id="errors" for="inputField"/>
</h:form>
inputTextの検証に失敗した場合、ユーザーからoutputTextを削除/非表示にします。これを行うための最もエレガントで将来のリファクタリングに耐える方法は何ですか?
outputText要素に属性rendered="#{!facesContext.validationFailed}"
を設定しようとしましたが、古いテキストを変更せずに、outputText要素が再レンダリングされるかどうかを決定するだけです。ただし、validateLongRange検証が失敗した場合、ユーザーは検証エラーメッセージを表示し、以前の有効な入力に基づく古い出力メッセージを表示することに関心がないため、ユーザーからoutputTextを完全に削除/非表示にします。それでも、Beanに格納されている値。