苦恼呀,做了一天了,二级菜单总是取不到值 public String addNewsPre() throws Exception {
 Map<String, List<SmallClass>> map = new LinkedMap();
        bigClassList = (ArrayList) ngr.findAllBigClass();
        for (int i = 0; i < bigClassList.size(); i++) {
            BigClass b = (BigClass) bigClassList.get(i);
           smallClassList = ngr.findAllSmallClass(b.getBigClassID());
            map.put(b.getBigClassName(),smallClassList);
        }
        this.setBigClassMap(map);
return SUCCESS;//跳转到下面这个页面
}<s:form action="addNews.action" name="sdf">
<TABLE width="780" align="center" CELLSPACING=0
background="images/bodybg.jpg">
<s:actionerror />
<s:textfield name="newsTitle" label="标题" />
<s:textarea name="newsContent" label="内容" />                             <s:doubleselect list="bigClassList" name="bigClass" 
listKey="bigClassName" listValue="bigClassName" label="请选择大类"
doubleList="bigClassMap[top]" doubleListKey="smallClassName"
doubleName="smallClass"  doubleListValue="smallClassName" /></s:form>神哪,救救我吧

解决方案 »

  1.   

    doubleList="bigClassMap.get(top.bigClassName)"
      

  2.   

    public String addNewsPre() throws Exception {
        Map<String, List<SmallClass>> map = new LinkedMap();
        bigClassList = (ArrayList) ngr.findAllBigClass();
        for (int i = 0; i < bigClassList.size(); i++) {
           BigClass b = (BigClass) bigClassList.get(i);
           smallClassList = ngr.findAllSmallClass(b.getBigClassID());
           map.put(b.getBigClassID(),smallClassList);
        }
        this.setBigClassMap(map);
        return SUCCESS;
    }<s:doubleselect list="bigClassList" name="bigClass"  
    listKey="bigClassID" listValue="bigClassName" label="请选择大类"
    doubleList="bigClassMap.get(top.bigClassID)" doubleListKey="smallClassName"
    doubleName="smallClass" doubleListValue="smallClassName" />
      

  3.   

     
    <s:doubleselect list="bigClassList" name="bigClass"
    listKey="bigClassID" listValue="bigClassName" label="请选择大类"
    doubleList="bigClassMap.get(top)" doubleListKey="smallClassId"
    doubleName="smallClass" doubleListValue="smallClassName" />
      

  4.   

    试了一下,不行,报如下错误
    >>>>>>>LOG4J<<<<<<< 15805306 2011-04-26 14:32:59,855 [http-8080-3] ERROR freeer.runtime  - #freeer.log.Log4JLoggerFactory$Log4JLogger.error(Log4JLoggerFactory.java:96)# - 
    Error on line 59, column 13 in template/simple/doubleselect.ftl
    stack.findValue(parameters.doubleListKey) is undefined.
    It cannot be assigned to doubleItemKey
    The problematic instruction:
    ----------
    ==> assignment: doubleItemKey=stack.findValue(parameters.doubleListKey) [on line 59, column 13 in template/simple/doubleselect.ftl]
     in user-directive s.iterator [on line 57, column 5 in template/simple/doubleselect.ftl]
     in user-directive s.iterator [on line 45, column 1 in template/simple/doubleselect.ftl]
     in include "/${parameters.templateDir}/simple/doubleselect.ftl" [on line 3, column 1 in template/xhtml/doubleselect.ftl]
    ----------
      

  5.   

    非常感谢redlotus_lyn给我的解答,最后总结一下,结帖Map<String, List<SmallClass>> map = new LinkedMap();
    要改成
    Map<Integer, List<SmallClass>> map=new LinkedHashMap();
    不然会报上述错误
    <s:form action="addNews.action" name="sdf">
    要改成
    <s:form action="addNews" name="sdf">
    不然,二级菜单显示为空
    ----
    public String addNewsPre() throws Exception {
      Map<String, List<SmallClass>> map = new LinkedHashMap();
      bigClassList = (ArrayList) ngr.findAllBigClass();
      for (int i = 0; i < bigClassList.size(); i++) {
      BigClass b = (BigClass) bigClassList.get(i);
      smallClassList = ngr.findAllSmallClass(b.getBigClassID());
      map.put(b.getBigClassID(),smallClassList);
      }
      this.setBigClassMap(map);
      return SUCCESS;
    }
    <s:form action="addNews" name="sdf">
    <s:doubleselect list="bigClassList" name="bigClass" 
    listKey="bigClassID" listValue="bigClassName" label="请选择大类"
    doubleList="bigClassMap.get(top.bigClassID)" doubleListKey="smallClassName"
    doubleName="smallClass" doubleListValue="smallClassName" />