Struts2:无法解析请求的列表键错误

Struts2:无法解析请求的列表键错误,struts2,Struts2,我很抱歉发布了这么多问题,我想我需要读更多 但首先我想知道你们是否能在这方面帮助我,因为它已经困扰了我很长一段时间了,我一直想知道为什么它不起作用 (这与以前的错误无关。还没有解决这个问题,新的错误出现了:x) 我有一个要填充到另一个列表中的列表,但在此过程中,我得到了一个标题为的错误:请求的列表键无法解析为集合/数组/映射/枚举/迭代器类型。 我环顾四周,并尝试了代码,但它仍然似乎没有真正的工作。这是我的密码: JSP(和jquery): $('select#feb')。更改(函数(){ $

我很抱歉发布了这么多问题,我想我需要读更多

但首先我想知道你们是否能在这方面帮助我,因为它已经困扰了我很长一段时间了,我一直想知道为什么它不起作用

(这与以前的错误无关。还没有解决这个问题,新的错误出现了:x)

我有一个要填充到另一个列表中的列表,但在此过程中,我得到了一个标题为的错误:
请求的列表键无法解析为集合/数组/映射/枚举/迭代器类型。

我环顾四周,并尝试了代码,但它仍然似乎没有真正的工作。这是我的密码:

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>