ignoreValidationFailed在ui:repeat内部不起作用

时间:2013-07-04 13:16:36

标签: jsf-2 primefaces omnifaces

我正在使用o:ignoreValidationFailed,但它在ui:repeat内部不起作用。当我在外面做同样的事情时,它有效!我尝试使用mojarra和MyFaces ......我正在使用primefaces。如果还有其他方法可以跳过仅一个按钮的验证...

 <o:form id="rateplanEditByPeriod" prependId="false">
 <p><p:messages id="mensagensDlg"/></p>

    <p:tabView id="tabs">
   <p:tab title="Cancelamento" id="tabCanc">
   <h:panelGrid id="cancelationsTable" columns="2" cellpadding="10px" columnClasses="alignTop,alignTop">

    <ui:repeat id="repeat" var="rest" value="#{rateplanByPeriodManaged.rateplanByPeriod.restriction.restTypeCancelation.restTypeCanConfs}"  >

                                        <h:panelGrid columns="8">

                                                <p:inputText id="penaltyValue_#{loop.index}" value="#{rest.penalityValue}" style="width:28px" label="Valor" title="Valor"  disabled="#{rest.noCancel}" required="true"/>


                                                <p:commandLink id="add_#{loop.index}" actionListener="#{rateplanByPeriodManaged.addCancConf}" update=":rateplanEditByPeriod:tabs:cancelationsTable" partialSubmit="true" process=":rateplanEditByPeriod:tabs:cancelationsTable" value="+">
                                                <o:ignoreValidationFailed />
                                                </p:commandLink>
                                                <p:commandLink actionListener="#{rateplanByPeriodManaged.removeCancConf(rest)}" value="-" update=":rateplanEditByPeriod:tabs:cancelationsTable" partialSubmit="true" process=":rateplanEditByPeriod:tabs:cancelationsTable">

                                                    <o:ignoreValidationFailed />
                                                </p:commandLink>   



                                        </h:panelGrid>

                                    </ui:repeat>


                                </h:panelGrid>

                            </p:tab>

                        </p:tabView>

                        <p:commandLink styleClass="button" onclick="dlgEdit.hide()" immediate="true" update=":msgsPanel">#{msgs['inventory.editByPeriod.cancel']}</p:commandLink>
                        <p:commandLink styleClass="button" actionListener="#{rateplanByPeriodManaged.editByPeriod(loginManaged.hotelSelected)}" oncomplete="if (!args.validationFailed) {dlgEdit.hide(); updateAllSearches(); updateAllNotifications();}" update="mensagensDlg, tabs" >#{msgs['inventory.editByPeriod.confirm']}</p:commandLink>


        </o:form> 

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题但是使用了p:datatable 我用

解决了这个问题

1-在必填字段中添加一个条件,以了解ajax是否来自提交按钮 正如@Camilla所说。

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

trans_desc_form是整个表单ID,savetransid是提交按钮保存ID

2-我从我的JPA实体中删除了@NotNull,强制验证

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

我已经为这个问题创建了一个问题 ignoreValidationFailed doesn´t work inside p:dataTable

答案 1 :(得分:1)

我不知道这是不是最好的方法,但它对我有用......

<h: inputText id="text1" value="" required="#{!empty param['formName:btnSave']}" />

答案 2 :(得分:1)

这不是获得“取消”按钮的正确方法。

只需将process="@this"放入<p:commandLink>,或者如果您不需要执行任何业务逻辑,请将其设置为正常<h:link>,以重新加载页面(从而隐式重新创建请求/查看范围的bean)。

至于<o:ignoreValidationFailed> <ui:repeat>单独失败,请创建一个issue