2
JSR-303
検証Beanを持つドメインモデルを持つフォームがあります。ここで、検証なしで「下書き保存」機能を追加したいと思います。私がimmediate=true
を対応するcommandButtonバリデーションに設定した場合、バリデーションはスキップされますが、フォーム送信もスキップされます。Beanの検証なしでフォームを送信
私の保存草案アクションでモデルを更新する方法はありますか?
JSR-303
検証Beanを持つドメインモデルを持つフォームがあります。ここで、検証なしで「下書き保存」機能を追加したいと思います。私がimmediate=true
を対応するcommandButtonバリデーションに設定した場合、バリデーションはスキップされますが、フォーム送信もスキップされます。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;
と
か、ビューが@ManagedProperty
が動作しませんどのBeanをスコープだ場合:もう一つの方法は、ボタンがで押された場合にELで確認することです
public boolean isDraft() {
return "true".equals(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("draft"));
}
そのパラメータ名の存在を判断する。たとえば、次のフォームとボタン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>
ありがとうございます。魅力のように動作します。 – onigunn
ありがとうございますBalusC – ismail