1

ユーザーが指定された 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 を使用しました

ただし、ユーザーが単一の値を入力しない場合は、null チェックを検証する必要があります。つまり、ユーザーはいずれかのフィールドに入力する必要があります。

使用したデータテーブルの上にエラーメッセージを表示する必要があります

助けてくださいよろしくお願いします

4

1 に答える 1

1
  • すべてのdepositDetail入力を入力したい場合は、それらを でマークしますrequired=true
  • そのうちの 1 つだけを埋めたい場合は、アクション メソッドでモデルを反復処理して、少なくとも 1 つが空でないことを確認します (ここに null 値を設定しないでください)。

    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" />

于 2013-02-09T11:32:58.513 に答える