如何在h:dataTable中显示每个h:inputText的错误消息?

时间:2012-01-06 02:27:31

标签: validation jsf datatable

我需要在h:dataTable中的每个h:inputText验证失败后显示错误消息。这是代码:

<h:dataTable value="#{myBean.dataList}" var="dataItem">

<h:column>
    <f:facet name="header">
        <h:outputText value="Name" />
    </f:facet>
    <h:inputText id="name" value="#{dataItem.name}" />
</h:column>

<h:column>
    <f:facet name="header">
        <h:outputText value="Value" />
    </f:facet>
    <h:inputText id="value" value="#{dataItem.value}" />
</h:column>
</h:dataTable>

当我试图把:

<h:inputText id="name" value="#{dataItem.name}" />
<h:message for="name"/>

它返回:

Caused by: java.lang.NullPointerException   
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.augmentIdReference(HtmlBasicRenderer.java:196)

2 个答案:

答案 0 :(得分:1)

请尝试以下操作。

<h:column>
      <f:facet name="header">
          <h:outputText value="Name" />
      </f:facet>
      <h:inputText id="name" value="#{dataItem.name}" required="true" requiredMessage="Mandatory"/>              

     <h:message for="name" id="msg"/>

</h:column>

您尚未将<h:message></h:message>绑定到<h:inputText></h:inputText>。我只是让<h:inputText></h:inputText>成为必填字段。您可能需要在需要时使用一些验证器以满足您的要求。

答案 1 :(得分:0)

您似乎使用的是早于1.2_14的Mojarra 1.2版本。这被称为issue 941,已在1.2_14中修复。目前最新的Mojarra 1.2是1.2_15。您可以download here。替换jsf-api.jarjsf-impl.jar,您应该全部设置。顺便说一句,你的代码很好。