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

时间:2012-03-28 07:05:45

标签: struts2

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

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

(这与先前的错误无关。没有解决这个问题,而且新的问题已经解决了:x)

我有一个列表,我想填充到另一个,但在这样做的过程中,我得到了标题错误:The requested list key could not be resolved as a collection/array/map/enumeration/iterator type.

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

JSP(和jquery):

<s:select id="feb" name="feb" headerKey="-1" list="febList" 
listKey="key" listValue="description" theme="simple" cssClass="formfields" />

$('select#feb').change(function() {
    $.ajax({
        url: "AnnotateSearchList?feb="+$(this).val()+"&dept="+$("#dept").val(),
                dataType :'json',
                type:'GET',
                contentType: 'application/json',
                success : function(data) {
                    alert('test');
                },
                error: function(){
                    alert('Error');                             
                }                                           
            })                                      
    });

方法:    public String doGetSelectedList()     {

    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;



}

// SelectItemsData的数据持有者:     SelectItemsData(String key,String description);

支柱/ 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>

我在哪里出错?我的结果实际上是返回到同一页面,所以我认为这可能是错误的可能原因。 感谢。

1 个答案:

答案 0 :(得分:0)

我在struts.xml中将“success”更改为“SUCCESS”并且它有效。