Struts2:无法解析请求的列表键错误
我很抱歉发布了这么多问题,我想我需要读更多 但首先我想知道你们是否能在这方面帮助我,因为它已经困扰了我很长一段时间了,我一直想知道为什么它不起作用 (这与以前的错误无关。还没有解决这个问题,新的错误出现了:x) 我有一个要填充到另一个列表中的列表,但在此过程中,我得到了一个标题为的错误:Struts2:无法解析请求的列表键错误,struts2,Struts2,我很抱歉发布了这么多问题,我想我需要读更多 但首先我想知道你们是否能在这方面帮助我,因为它已经困扰了我很长一段时间了,我一直想知道为什么它不起作用 (这与以前的错误无关。还没有解决这个问题,新的错误出现了:x) 我有一个要填充到另一个列表中的列表,但在此过程中,我得到了一个标题为的错误:请求的列表键无法解析为集合/数组/映射/枚举/迭代器类型。 我环顾四周,并尝试了代码,但它仍然似乎没有真正的工作。这是我的密码: JSP(和jquery): $('select#feb')。更改(函数(){ $
请求的列表键无法解析为集合/数组/映射/枚举/迭代器类型。
我环顾四周,并尝试了代码,但它仍然似乎没有真正的工作。这是我的密码:
JSP(和jquery):
$('select#feb')。更改(函数(){
$.ajax({
url:“AnnotateSearchList?feb=“+$(this.val()+”&dept=“+$(“#dept”).val(),
数据类型:'json',
类型:'GET',
contentType:'应用程序/json',
成功:功能(数据){
警报(“测试”);
},
错误:函数(){
警报(“错误”);
}
})
});
方法:
公共字符串doGetSelectedList()
{
this.output=newStringBufferInputStream(“”);
SimpleDataFormat sdf=新的SimpleDataFormat(“dd MMM yyyy”);
Calendar startCalendar=Calendar.getInstance();
startCalendar.add(日历年中的日历日,-3);
Calendar endCalendar=Calendar.getInstance();
if(this.startDate==null | | this.startDate.equals(“”){
this.startDate=sdf.format(startCalendar.getTime()).toString();
}
if(this.endDate==null | | this.endDate.equals(“”){
this.endDate=sdf.format(endCalendar.getTime()).toString();
}
System.out.println(“二月”+这个二月);
系统输出打印项次(“部门”+本部门);
this.optionList=xxx.getList(this.feb、this.dept、this.startDate、this.endDate);
ArrayList optList=新的ArrayList();
对于(字符串列表:选项列表){
添加(新建SelectItemsData(列表,列表));
}
System.out.println(“列表大小:+this.optionList.Size());
System.out.println(optList.size());
字符串json=new Gson().toJson(optList);
logger.sendMessage(getClass().getSimpleName(),LogHandler.INFO,json);
//System.out.println(json);
试一试{
setContentType(“应用程序/json”);
response.getWriter().write(json);
this.output=新的StringBufferInputStream(json);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
回归成功;
}
//SelectItems数据的数据保持器数据:
选择ItemsData(字符串键、字符串描述)
struts/xml:
<action name="AnnotateSearchList" class="mycompanyName.ajax.actions.ParetoChartCore" method="doGetSelectedList">
<result type="stream">
<param name="contentType">application/json</param>
<param name="inputName">output</param>
</result>
<result name="success">/ParetoChart.jsp</result>
</action>
应用程序/json
输出
/ParetoChart.jsp
我哪里做错了?我的结果实际上返回到同一页,所以我认为这可能是错误的原因。
谢谢。我将struts.xml中的“success”改为“success”,效果很好 如何设置
febList
并浏览文档,查看listKey
和listValue
如何工作,因为您的错误是无法找到键hmm,列表是从execute()方法获取的。显示execute方法的代码如果您的问题是该select标记的呈现,那么所有这些jquery和支持jquery ajax调用的操作似乎都无关紧要。找不到select标记的febList吗?在上面显示的配置中有两个名为“success”的结果。“success”是默认名称。我不知道这是否是唯一的问题,但这肯定是个问题。在已经有JSON插件的情况下,您还需要花费大量精力来创建JSON,这是因为您之前有两个名为“success”的结果。然而,这是非常令人困惑的,我强烈建议你不要这样做。
this.output = new StringBufferInputStream("");
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy");
Calendar startCalendar = Calendar.getInstance();
startCalendar.add(Calendar.DAY_OF_YEAR, -3);
Calendar endCalendar = Calendar.getInstance();
if (this.startDate == null || this.startDate.equals("")) {
this.startDate = sdf.format(startCalendar.getTime()).toString();
}
if (this.endDate == null || this.endDate.equals("")) {
this.endDate = sdf.format(endCalendar.getTime()).toString();
}
System.out.println("Feb "+this.feb);
System.out.println("Dept "+this.dept);
this.optionList =xxx.getList(this.feb, this.dept, this.startDate, this.endDate);
ArrayList<SelectItemsData> optList = new ArrayList<SelectItemsData>();
for(String list : optionList){
optList.add(new SelectItemsData(list, list));
}
System.out.println("Size of list: "+this.optionList.size());
System.out.println(optList.size());
String json = new Gson().toJson(optList);
logger.sendMessage(getClass().getSimpleName(), LogHandler.INFO, json);
//System.out.println(json);
try {
response.setContentType("Application/json");
response.getWriter().write(json);
this.output = new StringBufferInputStream(json);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return SUCCESS;
}
<action name="AnnotateSearchList" class="mycompanyName.ajax.actions.ParetoChartCore" method="doGetSelectedList">
<result type="stream">
<param name="contentType">application/json</param>
<param name="inputName">output</param>
</result>
<result name="success">/ParetoChart.jsp</result>
</action>