ignoreValidationFailed doesn´t work inside ui:repeat

时光怂恿深爱的人放手 提交于 2019-12-08 07:07:01

问题


I´m using o:ignoreValidationFailed, but it doesn´t work inside the ui:repeat. When I do the same outside, it works! I tried with mojarra ans MyFaces... I´m using primefaces. If there is another way to skip the validations only for one button...

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

回答1:


I have faced the same issue but with p:datatable I solved it with

1- add a condition to the required field to know if the ajax come from submit button or not as @Camilla said.

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

trans_desc_form is the entire form id and savetransid is the submit button save id

2- I removed @NotNull from my JPA entity which force the validation

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

I have created a question for this issue ignoreValidationFailed doesn´t work inside p:dataTable




回答2:


I don´t know if it´s the best aproach but it worked for me...

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



回答3:


This is not the right way to have a "Cancel" button.

Just put process="@this" in the <p:commandLink>, or if you don't need to do any business logic, make it a normal <h:link> which reloads the page (and thus implicitly recreates the request/view scoped bean).

As to <o:ignoreValidationFailed> the failure in <ui:repeat> on its own, please create an issue.



来源:https://stackoverflow.com/questions/17471304/ignorevalidationfailed-doesn%c2%b4t-work-inside-uirepeat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!