2012-02-07 10 views
0

私はこれがノブの質問かもしれないと推測していますが、私は答えを見つけるのが非常に苦労しています。JSFメニューの項目を使用してください

私はtempCategory呼ばれるQuizBeanの値に選択されたメニュー項目を格納する必要がアレイ

<f:selectItems value="#{quizBean.categoryArray}"/> 

から移入されたメニューを有します。私はsetTempCategory(String newValue)とgetTempCategory()というtempCategoryのgetterとsetterを持っています。

selectOneListboxの値を入力する必要があります。 quizBean.tempCategoryは、tempCategoryのsetメソッドを参照します。メニュー項目がsetTempCategory(String newValue)メソッドに送信されるように、newValueを何に置き換えるのですか?

<h:selectOneListbox value="#{quizBean.tempCategory(newValue)}"> 
<f:selectItems value="#{quizBean.categoryArray}"/> 
</h:selectOneListbox> <br/> 
<h:commandButton value="Choose Quiz" action="#{quizBean.chooseCategory(quizBean.getTempCategory)}"/> 
+0

これらはすべて文字列です。選択したメニュー項目の文字列値を取得し、chooseCategory()メソッドを使用して取得できる場所に格納する必要があります。 – bilestrojanman

答えて

0

実際、JSFは特定のプロパティのgetters/settersを自動的に呼び出します。選択した値がtempCategoryに設定されているため、newValueを渡す必要はありません。アクションのEL式のゲッターを呼び出します。

<h:selectOneListbox value="#{quizBean.tempCategory}"> 
    <f:selectItems value="#{quizBean.categoryArray}"/> 
</h:selectOneListbox> <br/> 
<h:commandButton value="Choose Quiz" action="#{quizBean.chooseCategory(quizBean.tempCategory)}"/> 

しかし、ここでHow to pass method arguments to an ActionListener?

1

あなたの近くには、あなたが何をすべきかで、この質問のためにBalusCで述べたようにあなたはEL-API-2.2を必要とするアクションメソッドとエルのimpl-2.2のjarファイルの引数を渡すことを忘れないでください、私は<f:ajax>を追加しました。ドロップダウンメニューの値を変更するたびに値がBeanに送信されるようにしたい場合私はitemValueitemLabelを使用

<h:selectOneListbox value="#{quizBean.tempCategory}"> 
    <f:selectItems value="#{quizBean.categoryArray}" var="category" itemValue="#{category.id} itemLabel="#{category.displayName}" /> 
    <f:ajax render="id_of_what_you_want_to_be_rerendered" /> 
</h:selectOneListbox> 

通知は、あなたが読むことができるhere彼らは何のためのものであるが、基本的には、IDselectOneListBoxの値に渡されるとlabelがUIに表示されます。あなたは、ボタンが冗長である提出<f:ajax>を使用する場合は

@ManagedBean 
@SessionScope // (for example...) 
public class QuizBean { 
    private String tempCategory; // will store Id of current category 

    public String getTempCategory() { 
     return tempCategory; 
    } 

    public setTempCategory(String pTempCategory) { 
     tempCategory = pTempCategory; 
    } 

    List<Category> CategoryArray; 
    // .. Getter and Setter for CategoryArray 
} 

Beanのコードは、このコードを持っている必要があります。送信ボタンを使用する場合は、それを追加して<f:ajax>を削除してください。

関連する問題