struts2的checkboxlist,select等标签发生could not be resolved as a collection/array/map/enumeration/iterat错误。控制台信息如下:
tag 'select', field 'list', id 'queryType', name 'queryType': The requested list key 'statisticsType' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
at org.apache.struts2.components.Component.fieldError(Component.java:231)
at org.apache.struts2.components.Component.findValue(Component.java:293)... ... ... ... ...
出现这种错误是,刚进入jsp页面时<s:select>标签的list的值为空。解决办法就是给它赋值。
(1)jsp页面
<s:select name="queryType" list="statisticsType" listValue="dictName" listKey="id.dictCode" />
(2)action
public class S9p69Action extends WTBaseAction {
private S9p69Service s9p69Service;
private List<SptPublicDictCode> statisticsType;
private String queryType;
public String enter() {
statisticsType = s9p69Service.getPublicDictCodeList(Constant.STATISTICS_Type);
return "feeCount";
}
public String queryInfo() {
//具体逻辑,在jsp显示具体数据
return "feeCount";
}
在第一次进入jsp页面时,<action method="enter">, 这时 statisticsType 取到值。在jsp页面<select>中显示出来。
在jsp页面点击查看详情按钮,进入<action method="queryInfo">,这时 statisticsType 是去不到值的。就会报错。
解决办法是再queryInfo给statisticsType赋值。
具体代码:
public String queryInfo() {
statisticsType = s9p69Service.getPublicDictCodeList(Constant.STATISTICS_Type);
//具体逻辑,在jsp显示具体数据
return "feeCount";
}