2
我有一個表格,其中有一個域模型,其中有一些JSR-303
驗證bean。現在我想在沒有任何驗證的情況下添加「保存草稿」功能。如果我在我的相應命令上設置immediate=true
,則跳過驗證,但也會跳過表單提交。提交沒有bean驗證的表格
有沒有辦法在我的保存草稿操作中更新模型?
我有一個表格,其中有一個域模型,其中有一些JSR-303
驗證bean。現在我想在沒有任何驗證的情況下添加「保存草稿」功能。如果我在我的相應命令上設置immediate=true
,則跳過驗證,但也會跳過表單提交。提交沒有bean驗證的表格
有沒有辦法在我的保存草稿操作中更新模型?
使用<f:validateBean>
您在哪裏設置disabled
屬性。
<h:inputText value="#{bean.input}">
<f:validateBean disabled="#{bean.draft}" />
</h:inputText>
如果評估true
,這將跳過與輸入的值相關聯的所有財產Bean驗證。您只應確保在驗證階段發生之前設置了boolean draft
屬性。例如。
<h:commandButton value="Save draft" action="#{bean.saveDraft}">
<f:param name="draft" value="true" />
</h:commandButton>
與
@ManagedProperty("#{param.draft}")
private boolean draft;
,或者如果它是一個視圖作用域的bean上@ManagedProperty
將無法正常工作:
public boolean isDraft() {
return "true".equals(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("draft"));
}
另一種方式是,如果按鈕被按下EL檢查確定其參數名稱的存在。例如,使用以下表單和按鈕ID
<h:form id="form">
<h:inputText value="#{bean.input}">
<f:validateBean disabled="#{not empty param['form:draft']}" />
</h:inputText>
<h:commandButton id="draft" value="Save draft" action="#{bean.saveDraft}" />
</h:form>
再次感謝BalusC。奇蹟般有效。 – onigunn
謝謝BalusC – ismail