struts2的s:doubleselect 二级菜单没有值

时间:2021-02-13 15:06:00
苦恼呀,做了一天了,二级菜单总是取不到值

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>



神哪,救救我吧

9 个解决方案

#1


怎么没有人哪。说两句吧,在线等。

#2


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

#3


试过,还是不行。还是感谢你的回答

#4


QQ:75425364

#5


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" />

#6


 

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

#7


引用 5 楼 redlotus_lyn 的回复:
public String addNewsPre() throws Exception {
  Map<String, List<SmallClass>> map = new LinkedMap();
  bigClassList = (ArrayList) ngr.findAllBigClass();
  for (int i = 0; i < bigClassList.size(); i……

试了一下,不行,报如下错误
>>>>>>>LOG4J<<<<<<< 15805306 2011-04-26 14:32:59,855 [http-8080-3] ERROR freemarker.runtime  - #freemarker.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]
----------

#8


非常感谢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" />

#9


同行!非常永兴

#1


怎么没有人哪。说两句吧,在线等。

#2


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

#3


试过,还是不行。还是感谢你的回答

#4


QQ:75425364

#5


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" />

#6


 

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

#7


引用 5 楼 redlotus_lyn 的回复:
public String addNewsPre() throws Exception {
  Map<String, List<SmallClass>> map = new LinkedMap();
  bigClassList = (ArrayList) ngr.findAllBigClass();
  for (int i = 0; i < bigClassList.size(); i……

试了一下,不行,报如下错误
>>>>>>>LOG4J<<<<<<< 15805306 2011-04-26 14:32:59,855 [http-8080-3] ERROR freemarker.runtime  - #freemarker.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]
----------

#8


非常感谢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" />

#9


同行!非常永兴