2

私の問題は、1 つの JSF ページに 2 つのフォームがあり、それぞれに<h:message>or<h:messages>タグがあることです。メッセージ/メッセージタグが検証エラーを出力することがわかっているので、2つのフォームのいずれかのフィールドを空のままにしておくと、「フィールドを空白のままにすることはできません」または何らかのメッセージが出力されるはずです。このメッセージが表示されますが、フォームが 2 つあるため 2 回表示されます。そのため、2 つのフォームのそれぞれに同じエラー/検証メッセージが表示されます。

だから私が必要とするのは、<h:messages>または<h:message>タグがエラー/検証メッセージをそれぞれのフォームごとに1回だけ表示することです!!

だからどんな助けでも大歓迎です!!

4

1 に答える 1

3

JSF 2 を使用している場合は、ajax でフォームを送信して更新するだけです。これにより、ビューを部分的に更新できます。

<h:form>
    <h:messages />
    ...
    <h:commandButton ...>
        <f:ajax execute="@form" render="@form" />
    </h:commandButton>
</h:form>

<h:form>
    <h:messages />
    ...
    <h:commandButton ...>
        <f:ajax execute="@form" render="@form" />
    </h:commandButton>
</h:form>

または、明白でない理由で ajax を使用できない/使用したくない場合、またはレガシー JSF 1.x をまだ使用している場合は、目的のフォームが送信renderedされたかどうかの属性をチェックインします。<h:messages>

<h:form binding="#{form1}">
    <h:messages rendered="#{form1.submitted}" />
    ...
    <h:commandButton ... />
</h:form>

<h:form binding="#{form2}">
    <h:messages rendered="#{form2.submitted}" />
    ...
    <h:commandButton ... />
</h:form>

ちなみに、質問で暗示していることとは反対に、この<h:message>問題は発生しないはずです。

于 2012-10-26T11:11:13.023 に答える