【问题标题】:Struts 2 How to display map checkboxlistStruts 2 如何显示地图复选框列表
【发布时间】:2016-07-19 13:17:55
【问题描述】:

我有以下代码在运行:

private Map<Long,String> map = new HashMap<Long, String>();

public Map<Long, String> getMap() {
    return map;
}

public void setMap(Map<Long, String> map) {
    this.map= map;
}

public String list() {
        List<Object> list = new ArrayList<>();
        list= objectDAO.listSomething();                        
            for (int i=0; i<list.size(); i++){
                Object row = (Object) list.get(i);
                Long id = row.getId();
                String name = row.getName();
                map.put(id, name);
            }
        return SUCCESS;
    }

使用调试器检查后,我可以看到映射中填充了正确的键和值。

我的jsp出现问题的地方在这里:

<s:checkboxlist list = "map" 
             listKey = "%{id.toString()}" 
           listValue = "%{name}" 
                name = "name" 
               value = "name" 
               label = "Label"/>

我也尝试过类似的方法,但没有运气:

<s:iterator value="map">
     <s:checkbox  label="Label" name="name" value="%{value}"/>
     <s:property value="%{value}"/>
</s:iterator>

点击动作时的错误是这样的(已编辑):

template/simple/checkboxlist.ftl stack.findValue(parameters.listKey) 中第 28 行第 13 列的错误未定义。它不能分配给 itemKey - 类:freemarker.core.Assignment 文件:Assignment.java 方法:接受行:111 - freemarker/core/Assignment.java:111:-1

任何想法如何解决这个问题?我已将代码转换为通用代码。谢谢!

【问题讨论】:

  • 第二个代码段是否也出现同样的错误?
  • 抱歉,第二段没有错误,但根本没有显示复选框。

标签: java jsp scope struts2 hashmap


【解决方案1】:

idname 是您在服务器端用于填充地图的变量的名称...

它们与您在 JSP 中读取的地图属性无关,即 keyvalue

<s:checkboxlist list = "map" 
             listKey = "%{key}" 
           listValue = "%{value}" 
                name = "value" 
               value = "name" 
               label = "Label"/> 

【讨论】:

  • @manu 你可以在&lt;s:checkboxlist&gt;list属性中使用map,不需要放listKeylistValue
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 2014-02-21
相关资源
最近更新 更多