2016-12-20 22 views
0

私は、ユーザーが新しいアカウントを作成するのに役立つJSFプロジェクトに取り組んでいます。ページには2つのラジオボタンがあります。JSF Beanで値を設定してリセットする際に直面する問題

<h:selectOneRadio value="#{accountBeans.radioData}" onClick="Common.showRadioButton(value)"> 
    <f:selectItem itemValue="1" itemLabel="Item 1" /> 
    <f:selectItem itemValue="2" itemLabel="Item 2" />    
</h:selectOneRadio> 

onclick Common.jsで定義されているjavascript関数に行きます。 accountBeans.javaのgetterおよびsetterメソッドでは、Beanの値を次のように設定します。

public String radioData = null; 

public String getRadioData() { 
    return radiodata; 
} 

public void setRadioData(String radioData) { 
    this.radioData = radioData; 
} 

ユーザーが初めてこのページにアクセスすると、両方のラジオボタンが選択されていない必要があります。これが起こるために私はメソッドを作成しました。これはaccountBeansのをreinitilizeし、以前に保存された値を使用する代わりにradioDataの値をnullにリセットします。

私がこのアプローチに直面している問題は、ラジオボタンを選択した後に他のページに移動し、値がリセットされた同じページに戻ったときです。アカウントが作成されるまでユーザーが選択した値が必要です。

再初期化メソッドを使用して保存された値をリセットしないと、新しいアカウントを作成する際に以前に保存されていた値が保持されていることが問題になります。誰でも私に教えてください、どのようにアカウントが作成されるまでradioDataの値を保持し、新しいアカウントの作成のためにradioData値がnullになるようにしてください。

+0

Java Bean標準の一部は、カプセル化を使用することです。あなたのプロパティはなぜpublicですか?使用しているBeanスコープも追加してください。 JSF ManagedBeansを使用しているとしますか?CDIが公開フィールドに関するエラーを投げるだけなので、 –

+0

はい、私はJSFマネージドBeanを使用しています。パブリックフィールドにエラーを投げているわけではありません。 – Sanket

+0

'Common.showradio ...'のコードを表示できますか –

答えて

0

ユーザーが初めてこのページにアクセスしたときは、ラジオボタン の両方を選択解除する必要があります。これが起こるには、以前に保存された値を使用する代わりに、 ラジオデータの値を ヌルにリセットするaccountBeansでreinitilizeメソッドを作成しました。

これは自動的に発生し、accountsBeanを最初に呼び出したので何もする必要はありません。

とにかく、使用しているBeanスコープであなたの返信を待っていますが、自分のJS関数を他のページへリダイレクトしているので、リクエストパラメータを使用する必要があります。

はあなたのJSファイルに次のようなものがあるとします。

switch(value){ 
case 1: window.location.href = "pageX.xhtml"; 
    break; 
case 2: window.location.href = "pageY.xhtml"; 
    break; 
} 

は、それからちょうど要求のparamとして値を追加します。

"page.xhtml?radioData="+value; 

その後、両方にfaceletにあなたが経由でリクエストパラメータにアクセスすることができます。

<h:head> 
    <f:metadata> 
     <f:viewParam name="radioData" value="#{bean.radioData}" /> 
    </f:metadata> 
    </h:head> 

この方法で選択されたデータは保持されます。

<h:link outcome="/index" includeViewParams="true" value="Back" /> 

または

<h:form> 
    <h:commandButton value="Back" action="/index?faces-redirect=true&amp;includeViewParams=true" /> 
</h:form> 

includeViewParams=trueが同じ要求を設定し、次のリダイレクトのパラメータ

+0

switch文の場合は、他のページにリダイレクトしません。どちらのオプションもDOJOポップアップを表示します。 – Sanket

+0

また、新しいアカウントを作成する際に、以前に保存された値が表示されます。どうすればいいのか分かりません – Sanket

+0

あなたの質問をリメイク/編集すれば最高だと思います –

関連する問題