0

私は次のようにBeanの検証を行っています。

@Min(value = 0)
@Max(value = 1000000)    
private int kilometres;

私のfaceletには次のものがあります:

<p:messages autoUpdate="true" showDetail="true" showSummary="true" />

<p:outputLabel for="kilometres" value="Kilometres" />
<p:inputText id="kilometres" value="#{bean.vehicle.kilometres}">
     <p:ajax event="change" />
</p:inputText>

これがあると、すべてのフィールド ID のすべてのメッセージが表示されることを除いて、正常に動作します。次のように、フィールドごとに指定したいと思います。

<p:messages for="kilometres" autoUpdate="true" showDetail="true" showSummary="true" />

ただし、 for="kilometres" オプションを追加すると、検証メッセージは表示されません。私は何かを見逃しましたか、それともバグですか?

よろしくお願いします

4

1 に答える 1

4

コンポーネントを使用して<p:message/>、各入力コンポーネントの検証メッセージを個別に表示します。

<p:outputLabel for="kilometres" value="Kilometres" />
<p:inputText id="kilometres" value="#{bean.vehicle.kilometres}">
    <p:ajax/>
</p:inputText>
<p:message for="kilometres"/>

ショーケース: AJAX - 検証

アップデート

特定のコンポーネント ( を使用) に対して複数のメッセージを表示するには、関連するコンポーネント ID をバッキング Bean 内でp:messages指定する必要があります。for="kilometres"

FacesContext context = FacesContext.getCurrentInstance();

context.addMessage("kilometres", new FacesMessage("Message 1"));
context.addMessage("kilometres", new FacesMessage("Message 2"));
于 2012-11-05T21:01:10.547 に答える