1

コマンドボタンをクリックしたとき。検証メソッドが呼び出されていますが、エラーメッセージが表示されていません..

ここに私のコードがあります..

<h:form id="form">
    <h:body>
        <p:panel style="width:500px">
            <h:outputLabel for="year" value="Select Year: *" style="font-weight:bold" />
            <p:selectOneMenu id="year" value="#{leaveBean.year}">
                <f:selectItem itemLabel="Select One" itemValue="null" />
                <f:selectItems value="#{leaveBean.yearDTO}" var="currentUser" itemValue="#{currentUser.name}" itemLabel="#{currentUser.name}" />
                <f:validator validatorId="LeaveCardValidator" />
            </p:selectOneMenu>
        </p:panel>

        <p:commandButton value="Submit" action="#{leaveController.leaveCard}" update="updateList,updateDetails" id="button"/>
       <h:message for="year" style="color:red"/>
4

3 に答える 3

4

<h:message>JSFがすべての ajax リクエストで を自動更新することを期待しているようです。これは真実ではありません。おそらく、PrimeFaces と混同している<p:messages>か、各ajax リクエストで自分自身を自動更新するように指示できる属性を<p:growl>持っています。autoUpdate

<h:message>がajax アップデートでカバーされていることを確認する必要があります。IDを渡すだけ

<h:message id="yearMessage" ... />

ajax 更新のクライアント ID コレクションに含めます。

<p:commandButton ... update="updateList updateDetails yearMessage" />

別の方法は、に置き換える<h:message>こと<p:messages autoUpdate="true">です。

于 2013-09-03T11:15:54.920 に答える
3

updateListとがどこにあるかはわかりませんが、updateDetails上記の例では、代わりに update="@form" を使用するか、次のように追加する必要があります。

update="updateList updateDetails @form" 

フォームが再びレンダリングされるように...

于 2013-09-03T06:36:39.657 に答える
0

これらのいずれかを使用してください: の内容を更新するためにフォーム全体を更新します。 <h:message />

<p:commandButton value="Submit" action="#{leaveController.leaveCard}" update="@form" id="button"/>

または<h:message />ID を指定し、この ID を<p:commandButton/>
<h:message id="msg" for="year" style="color:red"/>

<p:commandButton value="Submit" action="#{leaveController.leaveCard}" update="updateList,updateDetails,msg" id="button"/>
于 2013-09-03T06:39:42.883 に答える