我正在使用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>
答案 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。