2012-01-13 15 views
2

JSFフォームの必須入力フィールドをチェックするメカニズムを実装する際に問題があります。形。私がチェックしてこのような必須フィールドにいくつかの値の入力を促すために提出する前にカスタムメッセージを発射するためinputTexts中=「true」をメカニズム必要を使用していたJSF + PrimeFacesでフォームをリセットする前にいくつかの必須入力フィールドを確認しています

<p:inputText id="exp" required="true" requiredMessage="#{lang.dailyCurrencyValues_exp_req_txt}" value="#{marketDataDefinitionProcesses.currencyType.explanation}"/> 

をマイボスは、ユーザーが提出を成功裏に完了して同じページにとどまると、ページのリセットを依頼しました。これを実装するために、私はoncomplete = "document.myForm.reset();"提出ボタンのは、フォームとフォームのすべてのフィールドを正常にリセットしています。

ただし、ユーザがすべての必須フィールドを入力して[送信]ボタンを押すと、フォームはのrequiredMessage に指定されたメッセージを与え、フォームとその中のすべての要素をリセットします。私は、提出が失敗した場合、値をリセットするために、この状況を防止したいと思います。私は必須フィールドが満たされていない場合、フォームをリセットするのを防ぐためにJavaScript関数を実装しようとしました。しかし、やはり私の形式での要素値のの検索に関する問題に直面しています。

<p:calendar id="dateValueId" value="#{marketDataDefinitionProcesses.currencyType.dateValue}" pattern="dd.MM.yyyy" required="true" requiredMessage="#{lang.dailyCurrencyValues_dateValueId_req_txt}"/> 

JavaScriptでカレンダー要素の値を取得できませんでした。

今、私はあなたの意見をこの問題を解決するのを待っています。私は、required = "true"フィールドが満たされているかどうかについての情報を取得する、JavaScriptまたはJSF/PrimeFaces要素を使用してカレンダー値を取得するソリューションをオプションと考えています。

敬具...

ファルク

答えて

0

私はあなたとあなたの目標を達成することができると思いPrimeFacesのRequestContext

<h:form id="myForm"> 
    ... 
</h:form> 

@ManagedBean 
@RequestScoped 
public class MrBean { 
    public void doSomething() { 
     // Do your thing 

     RequestContext context = RequestContext.getCurrentInstance(); 
     context.execute("document.getElementById("myForm").reset()"); 
    } 
} 
+0

後を必要とする一部ができますコンテキストインスタンスを作成すると、私は事前定義された関数を実行していませんでした。私は何をすべきか? –

+0

@FarukPostacioglu RequestContextはPrimeFaces v3.0でのみ利用可能です。 –

+0

RequestContextはインスタンスを宣言できるので、以前のバージョンでも利用できますが、そのfunctiomのクラスは利用できません。 –

2

がポストした後、同じビューにリダイレクトを送信します。すべての入力値を空白にするか、少なくともリクエスト/ビュースコープBeanで定義されているように、デフォルト値に近い新しい要求を作成します。

public String submit() { 
    // ... 

    return FacesContext.getCurrentInstance().getViewRoot().getViewId() + "?faces-redirect=true"; 
} 
0

多分あなたは、ユーザーがデータを送信する際に、ページが新しいインスタンスを必要とする

public class MarketDataDefinitionProcesses{ 
    private CurrencyType currencyType; 
    Boolean createStatus; 


     public String create(){ 
     if(service.checkData(currencyType)){ 
    //insert data 
    //show statusMessage or not 
    createStatus=Boolean.TRUE; 
    reflesh(create,createStatus); 
    } 
    return null; 
    } 
    public void reflesh(CurrencyType preNextCreateCurrency,Boolean createStatus){ 
    preNextCreateCurrency = new CurrencyType(); 
    this.currencyType = preNextCreateCurrency ; 
    RequestContext rc = RequestContext.getCurrentInstance(); 
    rc.update("form:id"); // if the inputText in the panelGrid, you can put the panelGrid id 
    createStatus = Boolean.FALSE; 
    } 
    } 

このようにしようとすると、フォームを更新するためにReuqestContextを使用するか、

関連する問題