ignoreValidationFailed在p:dataTable中不起作用

时间:2013-07-19 17:53:53

标签: jsf-2 primefaces omnifaces

我在datatable中使用actionListener ajax调用并尝试执行以下操作:

  1. 跳过验证
  2. 使用插入的值
  3. 更新模型

    我知道BalusC的omnifaces实用程序可以使用o执行此操作:ignoreValidationFailed 但是我没能在primefaces数据表中工作。

    此外,我发现它无法在ui中工作:在另一篇文章中重复here 我不知道它是不是一个bug。 这是我的代码示例

    <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是否来自提交按钮 到autoComplete组件,其中trans_desc_form是整个表单id,savetransid是提交按钮保存id

    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;
    

1 个答案:

答案 0 :(得分:0)

要跳过验证,您可以使用immediate="true"

上的p:commandButton属性