首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

关于struts2的一个小疑点

2013-09-11 
关于struts2的一个小问题一个小问题 ,高手们请看下面代码问题出在哪里public class PersonAction extends

关于struts2的一个小问题

一个小问题 ,高手们请看下面代码问题出在哪里
public class PersonAction extends ActionSupport{
        private StaticThing staticThing;
         private Person person;

public PersonAction() {
super();
this.staticThing = new StaticThing();
}
        public void setStaticThing(StaticThing staticThing) {
this.staticThing = staticThing;
}

public StaticThing getStaticThing() {
return staticThing;
}
        public void setPerson(Person person){this.person = person;}

        public Person getPerson(){return this.person;}
}
 
public class StaticThing {
 private Nation nation;
 public Nation getNation() {
return nation;
}
public void setNation(Nation nation) {
this.nation = nation;
}
}


public class Nation {
 private Collection<String> list = new ArrayList<String>();
 public Nation(){
 list.add("汉族");
 list.add("回族");
 list.add("满族");
 list.add("苗族");
 }
public Collection<String> getList() {
return list;
}
public void setList(Collection<String> list) {
this.list = list;
}
 

}


jsp代码:
 民族s:select name="person.nation" list="staticThing.nation.list"/>



===============分割线==========================================



提示说:org.apache.jasper.JasperException: tag 'select', field 'list', name 'person.nation': The requested list key 'staticThing.nation.list' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
-------------------------------------------------

请问哪里错了, staticThing.nation.list这种连着用好几个"."的写法可以吗?应该怎么写


[解决办法]

引用:
能举个例子说明该怎么用吗
最好能拿我上面的代码举例,怎么改...

jsp代码:
  民族s:select name="person.nation" list="staticThing.nation.list" listKey="staticThing.nation.list" listValue="staticThing.nation.list"/>

是这样吗?
我这样试了下,跑不起来呀,错误提示一样

我不是说了吗select标签的list通常是map的他的listKey会默认取map的key而楼主这个是list集合哪里来的key当然会报这个类型不对应的错误了。楼主你这里不是map就不要用s:select标签你可以换成

<!--使用select元素利用s:iterator进行迭代-->
<select>
  <s:iterator value="staticThing.nation.list">
<!--这里<s:property />之所以不写value因为iterator每次迭代的时候就会值压入值栈的栈顶,value不写默认就是取栈顶的值 -->
    <option value="<s:property />"><s:property /></option>
  </s:iterator>
<select>

[解决办法]
引用:
Quote: 引用:

ognl表达式,只要里面有get方法,那样写应该就是可以的吧
public Collection<String> getList() {
 return list;
 }这个get方法我没这样写过,返回值是List或者Map比较好吧,愿意嘛我不知道,可能跟楼上说的吧



我试了下把Collection换成list,错误提示一样啊,
btw,最初就是List,是因为跑不起来才后来换成collection的..

怎么发现你的jsp里没有迭代?
jsp代码:
  <!--使用select元素利用s:iterator进行迭代-->
<select>  
<s:iterator value="staticThing.nation.list" id="ll">
<option value="${ll}">${ll}
</option> 
</s:iterator>
<select>

热点排行