当前位置: 代码迷 >> J2EE >> []struts标签无法获取遍历的值
  详细解决方案

[]struts标签无法获取遍历的值

热度:73   发布时间:2016-04-22 00:52:53.0
[求助]struts标签无法获取遍历的值
本人菜鸟 刚入门, 请问下为何我这个strtus标签iterator无法遍历值呢? 页面没有任何报错,也没有空指针异常,就是那几个值无法传递过来(productName,fixedPrice,dangPrice都是product类中的属性). 
包含关系: cartItems-->item-->pro.productName

请看下面代码: 
JScript code
 <s:iterator value="cartItems">     <tr class='td_no_bord'>    <td>      <a href="#"><s:property value="#item.pro.productName" /></a>    </td>    <td class="buy_td_5">      <span class="c_gray"><s:property value="%{item.pro.fixedPrice}"/></span>    </td>    <td class="buy_td_4">      <span><s:property value="%{item.pro.dangPrice}"/></span>    </td>    </tr></s:iterator>


Java code
================BuyAction.java(在struts.xml中有定义,根据私有属性获取值)======================public class BuyAction  extends BaseAction{    //input    private int id;    //output    private List<CartItem> cartItems;    private CartItem item;    private boolean hasBook;        ProductDAO pd = new JdbcProductDAO();    CartBean cb = new CartBean();    public String addBook(){             item = cb.buy(id);// <----调用CartBean.java的buy()方法        if(cartItems==null){            cartItems = new ArrayList<CartItem>();        }        if(cartItems.isEmpty()){            hasBook = false;            cartItems.add(0, item);        return "addInCart";                  }====================CartBean.java======================public class CartBean extends BaseAction implements Cart{    private CartItem item;        public CartItem buy(int bid) {        //根据商品pid,获取商品对象,封装成CartItem        ProductDAO pd = new JdbcProductDAO();        Book book = new Book();        try {            book = pd.getAbook(bid);//能够顺利通过JDBC获取数据库存储的数据                    item = new CartItem(book,1,true);             } catch (SQLException e) {            e.printStackTrace();                    }              return item;        }


------解决方案--------------------
楼上说要加id 貌似不加也可以、我的就没加id也能实现遍历;
LZ 你Debug看一下你返回的结果集里面item对象中的那个pro
属性,确定下是否为空呢?
------解决方案--------------------
另外就是 你的Item对象中的Pro属性对象有没有实现set get方法?这个是必须实现的、如果你要在页面遍历的话
------解决方案--------------------
<s:iterator value="cartItems">
<s:property value="对象名.属性" />
</s:iterator>
这样就可以了

<s:iterator value="cartItems" var="item">

<tr>

<td>

<a href="#"><s:property value="item.productName"/></a>

</td>

<td class="buy_td_5">

<span><s:property value="%{item.fixedPrice}"/></span>

</td>

<td class="buy_td_4">

<span><s:property value="%{item.dangPrice}"/></span>

</td>

</tr>

</s:iterator>
这样就可以了 你试试看看
------解决方案--------------------
像这种页面没值,无非就是下面几种情况
1.数据库没数据(进数据库查看下表)
2.没有查询到(调试,看看你的dao里是否有bug)
3.你的标签用错了(你自己一个一个的调试下就知道了,实在不行换种标签)
4.有时候会有缓存的现象,清理下缓存(这中很少)
------解决方案--------------------
像这种页面没值无非就是一下几种情况:
1.数据库没数据(进数据库查询下表)
2.你的daoimpl里有sql错(打个断电调试进去)
  相关解决方案