0

jsf、html、java、およびJavaDBを使用するWebサイトを作成しています。私のページの1つには、顧客が選択できるメニューを表すいくつかの画像がリストされています。ページの下部にはselectManyCheckbox、画像に対応するオプションがあります。顧客がメニューの組み合わせを選択すると、「注文」ボタンが顧客を次のページに案内します。このページには、(データベースから取得した)顧客に関する追加情報が一覧表示されます。これCustomer numberContact name加えて、選択したメニューが表に表示され、表示される行数はと同じである必要があります。選択されたメニューの数。私の主な問題は、から収集したデータを使用したいということですselectManyCheckbox選択したメニューフィールドへの入力として、残りはデータベースから収集されます(これは私が行って機能します)。値を個別の値として取得するにはどうすればよいですか?私はそれらを出力テキストでのみ使用でき、入力フィールドの値としては使用できません。

Javaコード:

        @Named
        @RequestScoped
        public class OrderBean implements java.io.Serializable {
        private Set<String> menus = new TreeSet<String>();

        public Set<String> getMenus() { 
           return menues;
        }

        public void setMenus(Set<String> newValue){
           menus = newValue;
        }

        public SelectItem[] getMenuesItems(){
           return menuesItems;
        }

        private static SelectItem[] menuesItems = {
           new SelectItem("Menu 1"),
           new SelectItem("Menu 2"),
           new SelectItem("Menu 3")
        };
   }

JSF、HTML:

      <div class="clear"></div>
      <div id="frame">
        <div id="frameCheckBox"><h:commandButton value="#{mld.Order}" action="Order"/>
             <h:selectManyCheckbox value="#{orderBean.menus}">
                  <f:selectItems value="#{orderBean.menusItems}"/>
             </h:selectManyCheckbox>
        </div>
       </div>
4

1 に答える 1

0

またはに置き換えSet<String>て、次のように使用して目的の入力コンポーネントを生成できるようにします。List<String>String[]<ui:repeat>

<ui:repeat value="#{orderBean.menus}" varStatus="loop">
    <h:inputText value="#{orderBean.menus[loop.index]}" />
</ui:repeat>

同様に、それはつまり、次のJSF2.2まで<h:dataTable>サポートしません。また、不変でセッターメソッドがないという単純な理由から、 Setviaではなくlist /arrayindexで入力値を参照する必要があることにも注意してください。<ui:repeat var>String

最後になりましたが、この構成はフォーム送信の処理中に失敗します。これは、Beanがリクエストスコープであり、フォームがエンドユーザーに提示された直後にガベージされるためです。ビュー、会話、またはおそらくセッションスコープなど、もう少し広いスコープに配置します。そうしないと、JSFは送信された値を初期リスト/配列に設定できません。

于 2013-03-14T02:58:04.020 に答える