2013-03-13 44 views
0

我正在創建一個使用jsf,html,java和JavaDB的網站。我的一個頁面將列出許多圖像,代表客戶可以選擇的菜單。在頁面底部有一個selectManyCheckbox,其中包含與圖像對應的選項。當客戶選擇了菜單組合時,「訂購」按鈕將引導客戶進入下一頁。在此頁面上列出了有關客戶的其他信息(從數據庫中檢索到),例如:Customer number,Contact name等。除此之外,所選菜單應列在表中,列出的行數應相同作爲選擇的菜單數量。我的主要問題是,我想將從selectManyCheckbox收集的數據用作所選菜單字段中的輸入,其餘部分從數據庫收集(我已完成並且工作正常)。我怎樣才能得到值作爲單獨的值?我只能在輸出文本中使用它們,而不能在輸入字段中使用它們。如何在輸入字段中顯示<h: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> 
+0

你到底想要達到什麼目的?你已經將所選的值輸入到服務器端,在'menues'集合中,那麼你想怎麼做呢? – 2013-03-13 21:39:48

+0

我認爲這裏可能存在英語溝通問題......你的意思是項目清單嗎?或者是用戶真的購買了幾個菜單(對於他們的餐廳也許......菜單是項目清單,通常是價格和說明/照片) – Gus 2013-03-13 21:43:11

+0

客戶輸入了送貨地址和日期,但所選菜單的信息應該從前一頁收集並插入。這些信息隨後會發送並作爲訂單註冊到客戶的數據庫中存儲。問題在於,我無法從selectManyCheckbox獲取信息作爲單個變量在發送到數據庫之前將它們放入「總順序列表」中。我只能將它們作爲輸出(全部一次),而不能作爲新字段的輸入。也許我正在做的事情完全錯誤和麻煩。 – CronbachAlpha 2013-03-13 21:54:49

回答

0

通過List<String>String[]更換Set<String>,這樣就可以產生具有<ui:repeat>的幫助下,所需的輸入組件如下:

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

<h:dataTable>,它直到即將到來的JSF 2.2才支持Set。還請注意,您確實需要通過列表/數組索引來引用輸入值,而不是通過<ui:repeat var>,原因很簡單,String是不可變的,並且沒有setter方法。

最後但並非最不重要的是,在處理表單提交期間,此構造將失敗,因爲您的bean是請求作用域,因此在將表單呈現給最終用戶後直接進行垃圾回收。把它放在更廣的範圍內,例如視圖,對話或者會話範圍。否則,JSF將無法在初始列表/數組中設置提交的值。

+0

謝謝! 我剛剛開始使用JSF,並且其方法尚未觸手可及:P – CronbachAlpha 2013-03-14 10:10:22

相關問題