在一个表单中,我有一些带有两个commandButton的inputText,一个用于accept,另一个用于cancel。如何仅对取消按钮禁用验证?
<h:form id="detailsForm">
<p:inputText id="editUsername" value="#{userController.editUser.usrUsername}" />
<p:inputText id="editFirstName" value="#{userController.editUser.usrFirstName}" />
<p:inputText id="editLastName" value="#{userController.editUser.usrLastName}" />
<p:commandButton value="Accept" update=":detailsForm" actionListener="#{userController.onDetailsEditAccept}" />
<p:commandButton value="Cancel" update=":detailsForm" actionListener="#{userController.onDetailsEditCancel}" />
</h:form>
我已经尝试在字段上插入required="false"
但它没有用。
我还尝试在字段上插入<f:validateBean disabled="true" />
,但它没有用。
答案 0 :(得分:30)
在取消immediate="true"
中使用属性commandButton
。通过跳过应用请求值,流程验证和更新模型值阶段,这将跳过表单的整个处理,这很难。
<p:commandButton value="Cancel" update=":detailsForm" actionListener="#{userController.onDetailsEditCancel}" immediate="true"/>
答案 1 :(得分:13)
在“取消”按钮中使用属性process="@this"
。这将阻止整个表单的提交。
或者您可以使用p:button
代替(但这不具有actionListener
属性)。见this other Q/A
答案 2 :(得分:0)
如果您不想提交表单。你应该只使用App.controller("viewDetailMenu", function ($scope, menuService, $stateParams) {
$scope.menu = menuService.getMenu($stateParams.id);
});
。 <p:button>
提交表单。
<p:commandButton>