2015-11-05 89 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

对我仍然不清楚! :( 请问您是否可以更正我的密码 –