1

我正在使用 o:ignoreValidationFailed,但它在 ui:repeat 中不起作用。当我在外面做同样的事情时,它起作用了!我尝试使用 mojarra ans 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> 
4

3 回答 3

2

我遇到了同样的问题,但是我用 p:datatable 解决了它

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

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

trans_desc_form 是整个表单id,savetransid 是提交按钮的save 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

于 2013-07-19T18:55:52.777 回答
1

这不是拥有“取消”按钮的正确方式。

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

至于<o:ignoreValidationFailed>失败<ui:repeat>本身,请创建一个问题

于 2013-07-04T15:12:33.323 回答
1

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

<h: inputText id="text1" value="" required="#{!empty param['formName:btnSave']}" />
于 2013-07-04T15:04:18.760 回答