2010-12-07 18 views
0

私は、ビュー層にJSF 1.2を使用するWebアプリケーションを開発しています。これまで、Ajaxを使用してページの一部をリフレッシュすることができました。しかし、BB OS 5.xを含むBlackberryデバイスをサポートするという要件があります。このデバイスのデフォルトのブラウザでは、JSのサポートが非常に限られています。例えばJSF Refresh with Ajax

、のは、私はオプション(果物、肉、野菜)との最初のカテゴリのリストを持っているとしましょう

<h:selectOneMenu id="foodCategorySelection" value="#{obj.foodCategory}"> 
    <f:selectItem itemLabel="Select Food Category..." /> 
    <f:selectItems value="#{foodService.foodCategories}" /> 
</h:selectOneMenu> 

私は何をしたいのは、次の選択するようにページの更新を持つことができるようですフィールドには、選択した食品カテゴリの食品のみが表示されます。

<h:selectOneMenu id="foodSelection" value="#{obj.food}"> 
    <f:selectItem itemLabel="Select a Food..." /> 
    <f:selectItems value="#{foodService.filteredFoods}" /> 
</h:selectOneMenu> 

この作業には共通のパターンがありますか?私は、食品オプションを刷新する前に、食品カテゴリをバッキングオブジェクトにバインドするために、フォームを何らかの形で提出しなければならないと仮定します。 (限られた)JSをサポートしているものに

答えて

2

、ちょうどドロップダウンが変化にJSでフォームを送信してみましょう:豆で

<h:selectOneMenu onchange="submit()"> 

、第一のドロップダウンの送信された値に基づいて第二のドロップダウンを移入します。最初のドロップダウンに添付されているvalueChangeListenerメソッドでこれを行うことができます。

JSがサポートされていない場合は、第1ドロップダウンの横にサブミットボタンを追加して、エンドユーザーが最初のドロップダウンで値を選択した後に手動でフォームを送信できるようにします。送信ボタンにアタッチされているBeanアクションメソッドの2番目のドロップダウンに値を設定します。