【问题标题】:Using LinkedHashMap for adding selected items in h:selectManyListbox [duplicate]使用 LinkedHashMap 在 h:selectManyListbox 中添加所选项目 [重复]
【发布时间】:2015-11-07 08:59:15
【问题描述】:

我正在开发一个 JSF 应用程序。我使用新的 LinkedHashMap 从数据库表中检索两个列值以填充列表框。第一列包含项目,第二列包含价格。这些项目显示在我的列表框中,但是当我选择一个或两个项目并单击按钮计算时,它给了我错误。错误是

javax.faces.FacesException:目标模型类型不是集合或数组

在下面查看我的代码Java

String url = "jdbc:mysql://localhost:3306/ListBox";
String user = "root";
String pw = "root";

String favlst;
double total;
double price;
String item;
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()){
     price = rs.getDouble("Price");
     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;
    price = 0;
    total += (Double)lst.get(item);
return "success";
   }
 }

JSF

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

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

    <br> <br>

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

</h:form>

【问题讨论】:

    标签: jsf


    【解决方案1】:

    您的第一个错误是您在 f:selectItemsh:selectManyListbox 的 value 属性中使用了相同的属性。那一定是不对的。如果您查看 LinkedHasMap api,https://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashMap.html,则错误非常明显。将 selectManyListbox 值后面的属性更改为正确类型的属性。

    【讨论】:

    • 请更正我的代码:(
    • 所有信息都在里面。如果您想要一个准备充分的示例,请等待有更多时间和一台真正的计算机的人。我没有时间,也没有冲动,也没有材料(手机)来进一步提供帮助,抱歉。
    • 顺便说一句,标题不符合问题。由于项目 显示,因此 mysql 标签是“错误的”(就像 java 标签一样)
    • 我如何计算所选商品的价格?
    • 抱歉,说真的……首先,此评论与您的​​原始问题和此答案完全无关,其次,如果您无法做到这一点,或者寻找(例如通过搜索引擎)如何在 java 中执行此操作,我会去寻找不同的工作……抱歉这么直率。如果需要,请标记此评论
    猜你喜欢
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 2019-04-19
    • 2014-11-30
    • 2021-01-10
    • 2013-07-13
    相关资源
    最近更新 更多