JSF2 ajax と Bean Validation を使用して単純な登録フォームを作成したいと考えています。これによりui:repeat value="#{facesContext.messageList}" var="m"
、検証が失敗したときにすべてのエラー メッセージをカスタム形式でエリアに表示できます。私のコードは Mojarra でうまく動作しますが、Myfaces2.1 に切り替えると、メッセージが表示されui:repeat
ませ ん。それはまだ動作しますが、それは私が望むものではありません。
しかし、今日、奇妙な回避策を見つけました:の親コンポーネントの1 つに属性を追加します。errorDisplay コンポーネントが毎回再レンダリングされるため、
これが重要な理由がわかりません。このテストは何かを変えますか?ol
facesContext.messageList
h:messages
rendered="#{not empty facesContext.messageList}"
ui:repeat
rendered="..."
#{not empty facesContext.messageList}
<h:form>
Name:<h:inputText value="#{hello.name}" id="name"/>
<br/>
Age :<h:inputText value="#{hello.age}" id="age" converterMessage="'Age'必须是一个数字"/>
<h:commandLink value="register" type="submit">
<f:ajax execute="@form" render="errorDisplay"/>
</h:commandLink>
<h:panelGroup> <!--rendered="#{not empty facesContext.messageList}"-->
<h:panelGroup id="errorDisplay"><!--rendered="#{not empty facesContext.messageList}"-->
<span>发生以下错误:</span>
<ol style="color:red;">
<ui:repeat value="#{facesContext.messageList}" var="m">
<li>${m.detail}</li>
</ui:repeat>
</ol>
</h:panelGroup>
</h:panelGroup>
</h:form>