如何Struts2标签库中,获取值?
<s:iteratorvalue="#request.list"><s:propertyvalue="id"/><s:propertyvalue="name"/>可以传过...
<s:iterator value="#request.list">
<s:property value="id"/>
<s:property value="name"/>
可以传过来的list里面还有个Person这个对象。。我想获取,这个对象中的name
怎么获取?
</s:iterator>
list返回的是一个Student, Student,属性有 id,name,Person (对象) Student 与Person的关系是,多对一的关系,在Action中,我是
public String execute() throws Exception {
List list=serviceInt.select(); -这是一个方法,返回 list<Student>
HttpServletRequest request=ServletActionContext.getRequest();
request.setAttribute("list", list);
} 然后在JSP页面中获取
<s:iterator value="#request.list">
<s:property value="id"/>
<s:property value="name"/>
<s:property value="person"/><br/> 这个属性在页面就会显示 ognl.NoConversionPossible
</s:iterator>
现在想取person中的name属性。。帮帮小弟 展开
<s:property value="id"/>
<s:property value="name"/>
可以传过来的list里面还有个Person这个对象。。我想获取,这个对象中的name
怎么获取?
</s:iterator>
list返回的是一个Student, Student,属性有 id,name,Person (对象) Student 与Person的关系是,多对一的关系,在Action中,我是
public String execute() throws Exception {
List list=serviceInt.select(); -这是一个方法,返回 list<Student>
HttpServletRequest request=ServletActionContext.getRequest();
request.setAttribute("list", list);
} 然后在JSP页面中获取
<s:iterator value="#request.list">
<s:property value="id"/>
<s:property value="name"/>
<s:property value="person"/><br/> 这个属性在页面就会显示 ognl.NoConversionPossible
</s:iterator>
现在想取person中的name属性。。帮帮小弟 展开
5个回答
展开全部
1.标签取值方式一
??? 通过<s:property value="" />取值
??? 当Action的valueStack中有该属性的值时,只需直接使用该属性的名字即可;
??? 当Action的valueStack中没有该属性的值时,比如在session,application范围中的属性值时,需要加#或者#attr.;
??? 例子:
??? 假设某Action中有person成员变量,在application中存在company属性
??? 那么我们可以通过以下方法取值:
??? <s:property value="person.name" />
??? <s:property value="#person.name" />
??? <s:property value="company.name" /> //无法取到,因为company不在action的valueStack中
??? <s:property value="#company.name" />
2.标签取值方式二
在任意的<s:/>标签内使用%{}来取值
当Action的valueStack中有该属性的值时,只需直接使用该属性的名字即可;
当Action的valueStack中没有该属性的值时,比如在session,application范围中的属性值时,需要加#或者#attr.;
例子:
假设某Action中有person成员变量,在application中存在company属性
<s:textfield name="person.name" value="person.name" /> //错误,value会直接显示person.name字样
<s:textfield name="person.name" value="%{person.name}" />
<s:textfield name="person.company.name" value="%{#company.name}" />
<s:textfield name="person.company.name" value="%{#attr.company.name}" />
3.获取JSP页面的request,session,application中的属性
?? 在页面中可以这样获取:
<td>${applicateionScope.counter}</td>
<td>${sessionScope.counter}</td>
<td>${requestScope.counter}</td>
或者直接这样用:${属性} ${userBean.username}。userBean可以是request或session中的对象。
struts2中的Action代码中的内容为:
ActionContext ctx = ActionContext.getContext();
ctx.getApplication.put("counter",new Integer(5));
ctx.getSession.put("counter",new Integer(5));
ctx.put("counter",new Integer(5));
ctx.put就是直接设置request的值。
也可以使用以下方式获得request:
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
struts2还提供了以下接口:
ServletContextAware:Action实现该接口,可以直接访问ServletContext。
ServletRequestAware:Action实现该接口,可以直接访问HttpServletRequest。
ServletResponseAware:Action实现该接口,可以直接访问HttpServletResponse。
??? 通过<s:property value="" />取值
??? 当Action的valueStack中有该属性的值时,只需直接使用该属性的名字即可;
??? 当Action的valueStack中没有该属性的值时,比如在session,application范围中的属性值时,需要加#或者#attr.;
??? 例子:
??? 假设某Action中有person成员变量,在application中存在company属性
??? 那么我们可以通过以下方法取值:
??? <s:property value="person.name" />
??? <s:property value="#person.name" />
??? <s:property value="company.name" /> //无法取到,因为company不在action的valueStack中
??? <s:property value="#company.name" />
2.标签取值方式二
在任意的<s:/>标签内使用%{}来取值
当Action的valueStack中有该属性的值时,只需直接使用该属性的名字即可;
当Action的valueStack中没有该属性的值时,比如在session,application范围中的属性值时,需要加#或者#attr.;
例子:
假设某Action中有person成员变量,在application中存在company属性
<s:textfield name="person.name" value="person.name" /> //错误,value会直接显示person.name字样
<s:textfield name="person.name" value="%{person.name}" />
<s:textfield name="person.company.name" value="%{#company.name}" />
<s:textfield name="person.company.name" value="%{#attr.company.name}" />
3.获取JSP页面的request,session,application中的属性
?? 在页面中可以这样获取:
<td>${applicateionScope.counter}</td>
<td>${sessionScope.counter}</td>
<td>${requestScope.counter}</td>
或者直接这样用:${属性} ${userBean.username}。userBean可以是request或session中的对象。
struts2中的Action代码中的内容为:
ActionContext ctx = ActionContext.getContext();
ctx.getApplication.put("counter",new Integer(5));
ctx.getSession.put("counter",new Integer(5));
ctx.put("counter",new Integer(5));
ctx.put就是直接设置request的值。
也可以使用以下方式获得request:
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
struts2还提供了以下接口:
ServletContextAware:Action实现该接口,可以直接访问ServletContext。
ServletRequestAware:Action实现该接口,可以直接访问HttpServletRequest。
ServletResponseAware:Action实现该接口,可以直接访问HttpServletResponse。
展开全部
检查下你的Student.hbm.xml是否在 person中设置了<one-to-many。。。。。。。。。。》
如果设置了,那么要想实现你的功能,需要两个 iterator 遍历
而list中一般只能放对象,即List<对象>,所以我建议你写成 Map<Student,List<Person>>
在JSP页面中,嵌套遍历下iterator就可以了
Java后台:
Map<Student,List<Person>> myMap=new LinkedHashMap<Student,List<Person>>();
最后: request.setAttribute("myMap", myMap);
JSP前台:
<s:iterator value="#request.myMap.keySet()" id="student">
${student.id}
${student.name}
<s:iterator value="#request.myMap.get(#person)" id="person">
${person.name}
</s:iterator>
</s:iterator>
如果设置了,那么要想实现你的功能,需要两个 iterator 遍历
而list中一般只能放对象,即List<对象>,所以我建议你写成 Map<Student,List<Person>>
在JSP页面中,嵌套遍历下iterator就可以了
Java后台:
Map<Student,List<Person>> myMap=new LinkedHashMap<Student,List<Person>>();
最后: request.setAttribute("myMap", myMap);
JSP前台:
<s:iterator value="#request.myMap.keySet()" id="student">
${student.id}
${student.name}
<s:iterator value="#request.myMap.get(#person)" id="person">
${person.name}
</s:iterator>
</s:iterator>
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<s:property value="id"/>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<s:iterator value="#request.list">
<s:property value="id"/>
<s:property value="name"/>
<s:property value="person"/><br/> //改成下面
<s:property value="person.name"/><br/>
</s:iterator>
<s:property value="id"/>
<s:property value="name"/>
<s:property value="person"/><br/> //改成下面
<s:property value="person.name"/><br/>
</s:iterator>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<s:iterator value="#request.list" var='p'>
<s:property value="p.id"/>
<s:property value="p.name"/>
Person对象里要有相应的get方法
<s:property value="p.id"/>
<s:property value="p.name"/>
Person对象里要有相应的get方法
更多追问追答
追问
你的意思是
????
追答
value是你要遍历的集合,var 是从集合中取出的当前元素(给这个元素命名为p), p.id 就相当于调用你这个对象(Person)的getId()方法
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询