1

私はprimefaces 3.3を使用しています。

次のようなdataTableがあります。

<p:dataTable value="#{someBean.items}" var="item" ..>
  <p:column>
    <p:inputText id="someInputText" validation="#{someBean.someValidator}">
  </p:column>
  ..
</p:dataTable>

バリデーターは標準です:

public void someValidator (FacesContext context, UIComponent component, Object value) throws ValidatorException {

  if(someCondition) {
    throw new ValidatorException(
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "error: ", "validation failed"));
  }

私が抱えている問題は、dataTable に複数のアイテムがあり、inputText コンポーネント「someInputText」の検証がアイテムの 1 つだけで失敗した場合、すべてのアイテムに対して検証エラー メッセージが表示されることです。

これを解決する方法はありますか?

4

2 に答える 2

3

p:message の for 属性を次のように使用します。

<p:dataTable value="#{someBean.items}" var="item">
  <p:column>
    <p:inputText id="someInputText1" validator="#{someBean.someValidator}" value="item.name">
    <p:message id="someInputText1Msg" for="someInputText1" />
  </p:column>
  <p:column>
    <p:inputText id="someInputText2" validator="#{someBean.someValidator}" value="item.model">
    <p:message id="someInputText2Msg" for="someInputText2" />
  </p:column>
</p:dataTable>
于 2012-06-20T06:15:28.033 に答える
-1

新しい FacesMessage の作成を変更して、「エラー:」ではなく component.getClientId() を使用します。

あれは:

if(someCondition) {
    throw new ValidatorException(
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, component.getClientId(), "validation failed"));
  }
于 2012-06-22T14:08:12.007 に答える