package com.pro.action;import java.util.List;
import java.util.Map;import com.opensymphony.xwork2.ActionContext;
import com.pro.entity.Cpinfo;
import com.pro.serivce.CpinfoSerivce;public class CpinfoAction {
private static final long serialVersionUID = 1L;
private CpinfoSerivce serivce;
@SuppressWarnings("unchecked")
public String cpList() throws Exception {
List<Cpinfo> li = (List<Cpinfo>) serivce.selectAll();
for(int i=0;i<li.size();i++){
System.out.println(li.get(i).getName());
}
Map<String, List<Cpinfo>> request = (Map<String, List<Cpinfo>>) ActionContext.getContext().get("request");
request.put("cpList", li);
return "rs";
} public CpinfoSerivce getSerivce() {
return serivce;
} public void setSerivce(CpinfoSerivce serivce) {
this.serivce = serivce;
}
}
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> <title>My JSP 'list.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<body> <s:iterator value="#request.cpList" status="cp">
类型:
<a href="#"><s:property value="#cp.name" /> </a> </s:iterator> </body>
</html>
进过测试 页面可以显示出    【 类型:】   10个  这个是写死的只是为了测试是否list有值
也就是我的list  已经捕捉到里面有值  
for(int i=0;i<li.size();i++){
System.out.println(li.get(i).getName());
}控制塔可以输出结果但是 <s:property value="#cp.name" />无法显示 项目是不抱错的不知道哪写的有问题呵呵,望高手指点,
还有 
Map<String, List<Cpinfo>> request = (Map<String, List<Cpinfo>>) ActionContext.getContext().get("request");
request.put("cpList", li);不知道  struts2  需要这样做不
因为我见网上有人没有这么写,

解决方案 »

  1.   


    这里不能这样使用吧?
    request.put("cpList", li);
    一般都是.setAttribute("cpList", li);这样才能绑定数据到request域,不然娶不到的。
      

  2.   

    <s:iterator value="#request.cpList" status="cp">
    类型:
    <a href="#"><s:property value="#cp.name" /> </a></s:iterator>
    伙计,你怎么用status来记录呢,好像不对吧,struts2中用的是id还是var来着,我忘了,你看一下文档
      

  3.   

    你用EL表达式试一下<将jstl导进来,1.1版本的>,
    <c:forEach var="cp" items="${requestScope.cpList}">
        <a href="#">${cp.name}</a>
    </c:forEach>
      

  4.   

    <s:iterator value="#request.cpList" status="cp">
    类型:
    <a href="#"><s:property value="#cp.name" /> </a>改为:
    <s:iterator value="#request.cpList" id="cp">
    类型:
    <a href="#"><s:property value="#cp.name" /> </a>
    try it...
      

  5.   


    这样使用是可以的,request容器底层就是一个map集合
      

  6.   

    我看明白为什么了
    Map<String, List<Cpinfo>> request = (Map<String, List<Cpinfo>>) ActionContext.getContext().get("request");
    request.put("cpList", li);你用map封装的数据
    所以你拿数据的时候只能用map的属性来提取
    比如你拿cp的name
    必须这样写:${map.value.p.product_name}
    我做购物车就是你这样搞的。完全一样。只不过我用的EL表达式!
      

  7.   

    <s:iterator value="#request.cpList" status="cp">
    类型:
    <a href="#"><s:property value="#cp.name" /> </a></s:iterator>应改为
    <s:iterator value="#request.cpList" var="cp">
    类型:
    <a href="#"><s:property value="#cp.name" /> </a></s:iterator>
    Map<String, List<Cpinfo>> request = (Map<String, List<Cpinfo>>) ActionContext.getContext().get("request");
    request.put("cpList", li);strust2不需要这样写,只要把li作为action的属性,然后提供get set方法就行了
      

  8.   

    不是啊  应该是  request.cpList  因为我已经取出值了 只是显示不了
    .name
    我看错了  我刚看了下我本来应该写 
    <s:iterator value="#request.cpList" id="cp">
    我写成
    <s:iterator value="#request.cpList" status="cp">
    还没跑我跑就知道错了
    status 是别名.................
      

  9.   

    结果显示 ID  没问题,呵呵呵
    strust2不需要这样写,只要把li作为action的属性,然后提供get set方法就行了如何写?cpList  get  set 省略...
    public String cpList() throws Exception {List<Cpinfo> cpList = (List<Cpinfo>) serivce.selectAll();return "rs";
    }
    这样吗?
      

  10.   

    你原来的cpList()方法中的代码基本不用变,只需要将cpList提升为成员变量就可以了,当然不要忘了给它提供相应的get和set方法
      

  11.   

    页面显示List,最终效果:Action:
    package com.pro.action;import java.util.List;
    import com.pro.serivce.CpinfoSerivce;public class CpinfoAction { private static final long serialVersionUID = 1L; private CpinfoSerivce serivce; @SuppressWarnings("unchecked")
    private List cpList = null; @SuppressWarnings("unchecked")
    public String cpList() throws Exception {
    setCpList((List) serivce.selectAll());
    return "rs";
    } public CpinfoSerivce getSerivce() {
    return serivce;
    } public void setSerivce(CpinfoSerivce serivce) {
    this.serivce = serivce;
    } @SuppressWarnings("unchecked")
    public void setCpList(List cpList) {
    this.cpList = cpList;
    } @SuppressWarnings("unchecked")
    public List getCpList() {
    return cpList;
    }
    }
    JSP:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>My JSP 'list.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <body>
    <s:iterator value="#request.cpList" id="cp"><s:property value="#cp.name" /></s:iterator>
    </body>
    </html>