数据表的jsf验证

时间:2013-02-09 06:49:41

标签: jsf-2 datatable

我想仅在用户未在给定的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 ----&GT;是depositBeans的列表(大小3)

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

但是如果用户没有输入A SINGLE VALUE,那么我需要验证null检查 即,用户必须输入任何一个字段

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

请帮帮我 谢谢你提前

1 个答案:

答案 0 :(得分: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标记并将其指向您的表格:

<h:message for="depositDataTable" style="color:red" />