我有一个添加一些数据的对话框:
<p:commandButton id="save"
actionListener="#{adminNationalController.saveTeam}"
action="#{adminManageInternationalTournamentController.updateTeamList}"
value="#{msg.save}" ajax="true"
icon="ui-icon-check"
onmousedown="return validateSubmit('addCombinedTeamForm', ['name'],'lang')"
oncomplete="if (!args.validationFailed) addCombinedTeamDialog.hide()"
process = "@form"
update="lang, name, :manageTournament:dataList,:manageTournament:scroll, :menuForm:growl, :manageTournament:nationalTeam">
<f:setPropertyActionListener
value="#{adminNationalController.newTeamBean}"
target="#{adminManageInternationalTournamentController.newTeamBean}"/>
</p:commandButton>
在saveTeam
我尝试验证数据,但action
案例验证失败。
是否可以禁止通话?
答案 0 :(得分:6)
从动作监听器中,当你想要中止其余动作监听器的处理和最终动作时,你应该抛出AbortProcessingException
。
但是,更好的方法是在输入组件上使用真正的Validator
。这样就可以绕过整个调用动作阶段。
答案 1 :(得分:1)
在您的saveTeam
中,如果验证失败,您可以在当前FacesContext
实例上调用FacesContext#renderResponse()以跳过所有后续阶段,然后转到呈现回复阶段。
只需添加以下行:
FacesContext.getCurrentInstance().renderResponse();
如果验证在saveTeam
中失败。
修改强> 的
我的建议是使用真正的validator
进行验证目的。