【问题标题】:ignoreValidationFailed doesn´t work inside p:dataTableignoreValidationFailed 在 p:dataTable 中不起作用
【发布时间】:2013-07-19 02:50:39
【问题描述】:

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

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

我知道 BalusC 的 omnifaces 实用程序库可以使用 o:ignoreValidationFailed 来做到这一点 但我无法在 primefaces 数据表中工作。

我还发现它无法在 ui:repeat in another post here 中工作 我不知道它是否是一个错误。 这是我的代码示例

<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;

【问题讨论】:

    标签: jsf-2 primefaces omnifaces


    【解决方案1】:

    要跳过验证,您可以在 p:commandButton 上使用 immediate="true" 属性

    【讨论】:

    • immediate="true" 如果验证失败,则不会使用插入的值更新模型
    猜你喜欢
    • 2013-07-02
    • 1970-01-01
    • 2013-08-09
    • 2013-11-20
    • 2016-10-06
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多