1

私はdatatable内でactionListener ajax呼び出しを使用しており、次のことをしようとしています:

  1. 検証をスキップ
  2. 挿入された値でモデルを更新します

BalusC による omnifaces ユーティリティ liberary が o:ignoreValidationFailed を使用してこれを実行できることは知っていましたが、primefaces データテーブル内で作業するのに失敗しました。

また、バグかどうかはわかりませんが、ここの別の投稿で ui:repeat 内で動作しないことがわかりました。これが私のコード例です

<o:form id ="trans_desc_form">          
      <p:outputPanel id="stkdetailsid">                 
    <p:dataTable id="transactiondetailsid" value="#{stockTransactionsBean.stkTransHeader.stkTransDetailsList}" 
                 var="stkTransDet"  rowIndexVar="rowIndex">            
         <p:column>  
                    <f:facet name="header">  
                        <h:outputText value="Item Code" />  
                    </f:facet>                         
        <p:autoComplete id="dd" required="true" 
                            value="#{stkTransDet.item}" var="i" itemLabel="#{i.itemno}   #{i.itemnamee}" 
                            itemValue="#{i}" converter="itemsConverter"
                            completeMethod="#{stockTransactionsBean.completeItems}"/>            
          </p:column>                          
           <p:column>
                 <p:commandButton  value="-"  update="@form"  process="@form"
                                    actionListener="#{stockTransactionsBean.removeRow(rowIndex)}"> 
                                    <o:ignoreValidationFailed />
                    </p:commandButton>                                   
           </p:column>                
            </p:dataTable> 

      </p:outputPanel>
      </o:form>  

回避策として、追加しました

1-必要なフィールドに条件を追加して、ajaxが送信ボタンから来ているかどうかを知るために、trans_desc_formがフォームID全体であり、savetransidが送信ボタンの保存IDであるautoCompleteコンポーネントにないかどうかを確認します

required="#{!empty param['trans_desc_form:savetransid']}"/> 

2-検証を強制するJPAエンティティから@NotNullを削除しました

@JoinColumn(name = "ITEMNO", referencedColumnName = "ITEMNO")
@ManyToOne(optional = false, fetch = FetchType.LAZY)
//@NotNull
private Item item;
4

1 に答える 1

0

検証をスキップするimmediate="true"には、p:commandButton

于 2013-07-22T19:48:41.463 に答える