2015-11-05 65 views
0

我已經使用LinkHashMap從數據庫檢索數據並將其填充到JSF中的列表框中。列表框被填充。基本上,如果用戶從列表框中選擇兩個項目,然後單擊計算命令按鈕,應用程序應顯示總價格。基本上在我的桌子上,我有兩列,項目和價格。項目(字符串)顯示在列表框中。但我的問題是如何檢索價值(雙倍),這是我可以計算用戶在JSF頁面中進行選擇的數量的價格。請幫我解決這個問題。 謝謝&此致敬禮。JSF LinkHashMap從數據庫動態填充列表框

見下面我的代碼:

的Java代碼

import java.util.LinkedHashMap; 
import java.util.Map; 
import java.sql.*; 
public class Menu2 { 
String url = "jdbc:mysql://localhost:3306/esd"; 
String user = "root"; 
String pw = "root"; 

String favlst; 
double total; 
Map<String,Object> lst; { 
    try{ 
Class.forName("com.mysql.jdbc.Driver"); 
Connection con = DriverManager.getConnection(url, user, pw); 


String sql = "SELECT * FROM list"; 
Statement stt = con.createStatement(); 
ResultSet rs = stt.executeQuery(sql); 

lst = new LinkedHashMap<String, Object>(); 
while(rs.next()){ 
    double price = rs.getDouble("Price"); 
    String item = rs.getString("Item"); 
    lst.put(item, price); 
} 


}catch(Exception e){ 

    } 
} 

public double getTotal() { 
    return total; 
} 

public void setTotal(double total) { 
    this.total = total; 
} 

public Map<String, Object> getSelectlst() { 
    return lst; 
} 

public String Calculate(){ 
    total = 0; 
double price = 0; 
price += (Double)lst.get(item); 


return "success"; 
    } 
} 

JSF頁面

<f:view> 
<h:form> 
    <h3> Generated by Map </h3> 

    <h:selectOneListbox value = "#{menu2.selectlst}"> 
     <f:selectItems value = "#{menu2.selectlst}"/> 
    </h:selectOneListbox> 

    <br> <br> 

    <h:commandButton value = "Calculate" action = "#{menu.Calculate}"/> 
    <br> <br> 
Total: Rs <h:outputLabel value = "#{menu.total}"></h:outputLabel> 

</h:form> 

回答

1

我真的不知道你的職業目標,但OB虛擬值是不正確的。您將selectItems綁定到LinkedHashMap,這似乎很好。但是你的選擇的價值是相同的!

什麼我建議:

  • 型號的元素作爲一個對象如StoreItem(帶屬性的ID,名稱,價格)
  • 使用所有可用項List<StoreItem> allItems
  • 使用的selectedItems一個List<StoreItem> selectedItems
  • 使用<f:selectItems value="#{menuBean.allItems}" var="i" itemLabel="#{i.name}" itemValue="#{i}"/>
  • 註冊一個轉換器爲StoreItem,以字符串表示之間進行轉換(使用id)和對象表示。
  • 迭代你calculate方法通過selectedItems
+0

你有什麼建議? –

+0

將建議的答案延伸... – Thor

+0

對我仍然不清楚! :( 請問您是否可以更正我的密碼 –