【问题标题】:jsf validation for datatable数据表的jsf验证
【发布时间】:2013-01-24 23:51:38
【问题描述】:

只有当用户没有在给定的 p:inputText 字段中输入任何值时,我才想验证下面的数据表

<p:dataTable id="depositDataTable" value="#{pc_intimationDeposit.pendingRep.depositeBeans}" var="deposit">
    <p:column style="text-align:right">
        <h:outputText value="#{deposit.depParticulars}" />
    </p:column>
   <p:column id="value">
        <h:inputText id="depositDetails" class="right_input" value="#{deposit.amnt}" tabindex="2"                                       converterMessage="Please Enter Numbner's Only" validatorMessage="please"> 
           <f:convertNumber  pattern="##,####,##0.00" for="depositDetails" type="currency" />
        </h:inputText>
<p:message id="errMsgDepositDetails" for="depositDetails" display="text"></p:message>   
    </p:column>
</p:dataTable>

pc_intimationDeposit.pendingRep.depositeBeans---->是一个depositBeans列表(大小为3)

我使用 f:convertNumber 输入的值符合我们的要求

但是如果用户没有输入一个单一的值那么我需要验证空检查 即,用户必须输入任何一个字段

我需要在使用的数据表顶部显示错误消息

请帮帮我 提前谢谢你

【问题讨论】:

    标签: jsf-2 datatable


    【解决方案1】:
    • 如果您想填充每个 depositDetail inputs,请标记 他们与required=true
    • 如果您只想填充其中一个,请在您的操作方法上, 遍历您的模型以确保至少有一个不为空(此处不应有空值):

      boolean filled = false;
      for (DepositeBean dep : depositeBeans){
      if (!dep.getAmnt.equals("")){
          filled = true;
      }
      }
      if (!filled){
         FacesContext.getCurrentInstance().addMessage(null, 
           new FacesMessage(FacesMessage.SEVERITY_ERROR, "You have to fill at least one deposit detail field", null));
      }
      

    对于要显示的消息,添加h:message 标记并将其指向您的表格:

    &lt;h:message for="depositDataTable" style="color:red" /&gt;

    【讨论】:

    • 不能使用 jsf 验证来做同样的事情,即实现验证器... public void validate(FacesContext fc, UIComponent comp, Object value)
    • 正如方法签名所说,您遇到的问题是您将单个组件接收到您的验证器中。所以每个输入都不知道其他输入。这样,您应该创建自己的 depositDataTable 自定义组件并编写我上面建议的相同逻辑,以便能够验证整个数据表。
    猜你喜欢
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2012-05-14
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    相关资源
    最近更新 更多