2013-02-19 36 views
18

Trong biểu mẫu tôi có một số inputText với hai commandButton, một cho chấp nhận và một cho hủy bỏ. Làm cách nào để vô hiệu hóa xác thực chỉ cho nút hủy?PrimeFaces vô hiệu hóa xác thực trên nút hủy

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

Tôi đã cố gắng chèn required="false" trên các trường nhưng nó không hoạt động. Tôi cũng đã thử chèn <f:validateBean disabled="true" /> trên các trường và nó không hoạt động.

Trả lời

25

Sử dụng thuộc tính immediate="true" khi hủy commandButton. Điều này sẽ bỏ qua toàn bộ quá trình xử lý của biểu mẫu, khó khăn bằng cách bỏ qua các giá trị yêu cầu áp dụng Áp dụng yêu cầu, Xác thực quy trìnhCập nhật giá trị mô hình giai đoạn.

<p:commandButton value="Cancel" update=":detailsForm" actionListener="#{userController.onDetailsEditCancel}" immediate="true"/> 
13

Sử dụng thuộc tính process="@this" trong nút Hủy. Điều này sẽ ngăn chặn toàn bộ biểu mẫu được gửi.

Hoặc bạn có thể sử dụng p:button thay thế (tuy nhiên điều này không có thuộc tính actionListener). Xem this other Q/A

0

nếu bạn không muốn gửi biểu mẫu. Bạn chỉ nên sử dụng <p:button>. số <p:commandButton> gửi biểu mẫu.

<p:button value="delete All" 
action="#{reloadBean.purge}" update="@form"/> 
+0

Tại sao bạn lặp lại câu trả lời đã cho và bao gồm cả người làm việc không liên quan? – BalusC

+0

tác phẩm này dành cho tôi, vì vậy tôi muốn chia sẻ ví dụ của mình. xin lỗi nếu tôi không sử dụng chính xác diễn đàn – zedtimi

+0

Chỉ cần bỏ phiếu cho câu trả lời phù hợp với bạn. – BalusC

Các vấn đề liên quan