见代码
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;import com.dao.JdbcFactory;
import com.opensymphony.xwork2.ActionSupport;public class Show_Goods extends ActionSupport{
private List myList; public List getMyList() {
return myList;
} public void setMyList(List myList) {
this.myList = myList;
} @Override
public String execute() throws Exception {
String sql = "select * from goods";
ResultSet rs = JdbcFactory.selectDy(sql);
while(rs.next()){
Goods goods = new Goods();
goods.setGid(rs.getString(1));
goods.setGname(rs.getString(2));
goods.setPrice(rs.getFloat(3));
goods.setQuantity(rs.getInt(4));
myList.add(goods);
}

return SUCCESS;
}

}其中Goods是我建的一个类,有get set方法和相关属性。
我想在JSP页面中将myList中存储的数据一个一个循环打印出来(用struts2 的标签)。请问在JSP页面中怎么写。
我这样写的:
<s:iterator id="item" value="myList">
<s:property id="item" value="gid"/> <br>
<s:property id="item" value="gname"/> <br>
<s:property id="item" value="price"/><br>
<s:property id="item" value="quantity" /> 
</s:iterator>
并不能取到值,请高手指点下。

解决方案 »

  1.   

    你确定 你的value中的 值和实体里面对 名字一样?
      

  2.   

    把<sproperty>的id名字改下,value用xx.属性名,试一试,多试试。
      

  3.   

    关键在于你的实体类Goods以及SQL语句是否能查询出具体的值;
    另外  public String execute() throws Exception {
            String sql = "select * from goods";
            try{
            ResultSet rs = JdbcFactory.selectDy(sql);
            while(rs.next()){
                Goods goods = new Goods();
                goods.setGid(rs.getString(1));
                goods.setGname(rs.getString(2));
                goods.setPrice(rs.getFloat(3));
                goods.setQuantity(rs.getInt(4));
                myList.add(goods);
            }
            }catch(Exception ex){
                ex.printStack();
            }
            return SUCCESS;
        }
      

  4.   

    <s:property  value="#item.gid"/>
      

  5.   

    sql能够查询出值,如果单独用list添加,像myList.add(rs.getString(1))的话就能够打印出来,然道是Goods类写错了还是怎么?请指点下...用了楼上几位的方法还是不能取值。报错的是myList.add(good)这一行。
      

  6.   

    明显是你的myList没实例化!没实例化就调用add方法肯定报错了。。
      

  7.   

    <s:iterator id="item" value="myList">         //这句话中value的值表示集合中迭代出的一个元素,
    <s:property id="item" value="myList.gid"/> <br>
    <s:property id="item" value="MyList.gname"/> <br>
    <s:property id="item" value="MyList.price"/><br>  //value最好写成Object.attribute
    <s:property id="item" value="MyList.quantity" />  
    </s:iterator>
      

  8.   

    楼主,将 private List myList;
    改成 private List myList =new List();List必须实例化的,他是对象类型,不是值类型基础啊
      

  9.   

    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;import com.dao.JdbcFactory;
    import com.opensymphony.xwork2.ActionSupport;public class Show_Goods extends ActionSupport{
        private List myList;    public List getMyList() {
            return myList;
        }    public void setMyList(List myList) {
            this.myList = myList;
        }    @Override
        public String execute() throws Exception {
            List list = new ArrayList();
            String sql = "select * from goods";
            ResultSet rs = JdbcFactory.selectDy(sql);
            while(rs.next()){
                Goods goods = new Goods();
                goods.setGid(rs.getString(1));
                goods.setGname(rs.getString(2));
                goods.setPrice(rs.getFloat(3));
                goods.setQuantity(rs.getInt(4));
                list.add(goods);
            }
            setMyList(list);
            return SUCCESS;
        }
        
    }页面正常接MyList就行了
      

  10.   

    <s:iterator id="item" value="myList">
        <s:property value="gid"/> <br>
    </s:iterator或
    <s:iterator id="item" value="myList">
        <s:property value="#item.gid"/> <br>
    </s:iterator
      

  11.   

        @Override
        public String execute() throws Exception {
            String sql = "select * from goods";
            ResultSet rs = JdbcFactory.selectDy(sql);
            List myList = new ArrayList();       
                while(rs.next()){
                Goods goods = new Goods();
                goods.setGid(rs.getString(1));
                goods.setGname(rs.getString(2));
                goods.setPrice(rs.getFloat(3));
                goods.setQuantity(rs.getInt(4));
                myList.add(goods);
            }
            
            return SUCCESS;
        }