2011-09-15 8 views
2

JSR-303検証Beanを持つドメインモデルを持つフォームがあります。ここで、検証なしで「下書き保存」機能を追加したいと思います。私がimmediate=trueを対応するcommandButtonバリデーションに設定した場合、バリデーションはスキップされますが、フォーム送信もスキップされます。Beanの検証なしでフォームを送信

私の保存草案アクションでモデルを更新する方法はありますか?

答えて

4

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

ありがとうございます。魅力のように動作します。 – onigunn

+0

ありがとうございますBalusC – ismail

関連する問題