这是产品列表的jsp页面(/productList.do)(图片弄不上来,只能用文本了):序号  产品名称  价格  操作  
1   JAVA编程思想:第3版 95.00  
2   精通Hibernate:Java对象持久化技术详解 59.00  
3   Java 2核心技术(第6版) 卷I:基础知识  75.00  
4   Effective Java中文版 39.00  
5   Java与模式 88.00  
6   深入浅出Hibernate 59.00  
7   Tomcat与Java Web开发技术详解 45.00  
8   精通Spring 39.00  代码1:(产生以上列表的嵌入html的代码,点击产品名称超链接将进入相应的产品说明页面productDetail)
<%
List productList = (List)request.getAttribute("productList");
for(int i = 0;i < productList.size();i++){
Product product = (Product)productList.get(i);

%>
<tr>
<td class="tablebody2" valign="middle" align="center" width="8%"><%=product.getProductid()%></td>
<td class="tablebody1" valign="middle" width="60%"> &nbsp;&nbsp;<a href="productDetail.do"><%=product.getName()%></a></td>
<td class="tablebody2" valign="middle" align="center" width="8%"><%=product.getBasePrice()%></td>
<td class="tablebody1" valign="middle" align="center" width="24%"> <a href="../shoppingCart/shoppingCart.html"><img border="0" src="<%=request.getContextPath()%>/images/car_new.gif" width="97" height="18"></a></td>
</tr>
<%
}
%>代码2:(eclipse中,productAction类)
public ActionForward showList(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
IProductBusiness business = (IProductBusiness) BusinessFactory.getBusiness(IProductBusiness.class.getName());

List productList = business.findAllProducts();

request.setAttribute("productList", productList);

return mapping.findForward("productList");
}
@Test
public ActionForward showDetail(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
IProductBusiness business = (IProductBusiness) BusinessFactory.getBusiness(IProductBusiness.class.getName());
        
        Product productDetail = business.getProductById(Integer.parseInt(request.getParameter("productid")));

        request.setAttribute("productDetail", productDetail);
return mapping.findForward("productDetail");
}问题是:当我单击产品名称进入产品说明时,action类里有个方法是getProductById,如何从页面中获得产品Id呢?关键位置是 
上面action类中:Product productDetail = business.getProductById(Integer.parseInt(request.getParameter("productid")));
红字体部分,productid应该换成jsp页面中的哪个元素呢?
谢谢大家啦,如果我说的不明白可以回帖问 我会及时补充!

解决方案 »

  1.   

    <a href="../shoppingCart/shoppingCart.html?productid=<%=product.getProductid()%>"><img border="0" src="<%=request.getContextPath()%>/images/car_new.gif" width="97" height="18"></a>加上红色部分试试
      

  2.   

    楼主这个应该是 一览 画面吧,是数据库读出来的吧?要是这样的话,读到页面就应该有固定的id了,二楼方法是可行的。
    为啥 DB取得之后的id还是“动态生成的”?听不明白
      

  3.   

    刚才试了还是不行,action里当我要取id的时候页面已经生成了啊
      

  4.   


    这个应该可以吧,链接是通过循环动态生成的
    <a href="../shoppingCart/shoppingCart.html?productid=${product.Productid}"> <img border="0" src=" <%=request.getContextPath()%>/images/car_new.gif" width="97" height="18"> </a>
    我在项目里是这样用的,其实和上面的方法一样啦,不过看上去简洁点
      

  5.   

    "action里当我要取id的时候页面已经生成了啊"这句话,我不是很懂呵呵
    我想说,执行过程是这样的
    1,action里面取得productList,这里面是包含id的,这时候页面还没生成。
    2,然后,页面产生,从request里面把productList取出来,也是有ID信息的,id是从数据库来的,
    productid= <%=product.getProductid()%>">应该是可以拿到的~~恩
    3,最后,既然拿得到,就应该可以通过url传给下一个action……我还有个问题啊,这个链接的写法:<a href="../shoppingCart/shoppingCart.html">
    不是应该写成:<a href="../shoppingCart/xxxxAction.do?>的么?
    调用你要掉的Action。
    为啥制定一个html啊。楼主你这么些能调用起来么?打断点能停吗?
      

  6.   

    终于成功啦!用的是二楼的方法,谢谢啦!不过二楼有一个小错误额 我搞了半个小时 
    ?productid= <%=product.getProductid()%>
    productid=后面应该没有空格 唉 开始我直接复制的。~~~--
      

  7.   

    7楼说得太好了 一看你写的我恍然大悟 !
    那个shoppingCart应该是.do  购物车我还没开始做呢 二楼可能加错了把,他的代码是对的 我开始说的是productDetail.do 哈哈 终于弄明白了!