在jsps之间发送bean

时间:2013-12-22 19:19:37

标签: jsp struts javabeans

我在jsp1上显示了一个demandes列表,当我选择一个时,我想去jsp2显示需求详情并允许人们在下面发表评论。 我有这个问题,当我发送选定的demande并转到jsp2时,我发现此错误:Cannot find bean: "demand" in scope: "request" 这是我的代码:

JSP1:

    <logic:iterate id="demande" name="demandes">
    <html:link  page ="/PAGES/commentaire.jsp" paramId="demand" 
                      paramName="demande" paramProperty="content">
    <bean:write name="demande" property="content" /><br>
    </html:link>
    </logic:iterate>

JSP2:

<bean:write name="demand"  scope="request"/>

我真的不知道问题可能来自哪里,因为每件事情看起来都很合适。 有没有人有想法。

Seconde版本: JSP1:

<html:link  page ="/show.do" paramId="demande" paramName="demande" >
            <bean:write name="demande" property="demandeId" /><br>
        </html:link>

的struts-config.xml:

<action path="/show" 
                type="action.ActionAfficherDemande"             
                validate="true"
                input="/PAGES/JSP1.jsp"
                scope="session">
            <forward name="success" path="/PAGES/JSP2.jsp" redirect="true"/>            
 </action>

ActionAfficherDemande.java:

HttpSession session = request.getSession();
Demande myDemande = (Demande) session.getAttribute("demande");

1 个答案:

答案 0 :(得分:2)

你正在使用Struts。 Struts是一个MVC框架。 MVC的一个非常简单的规则是:所有请求都转到控制器,控制器准备模型,然后转发到视图。你永远不应该有一个JSP的链接。永远是控制器。您的所有链接都应以.do结尾。绝不使用.jsp

此外,您将请求参数与请求属性混淆。请求参数是浏览器使用表单发送到服务器的字符串,或带有查询字符串的链接(例如/foo.do?bar=baz)。请求属性是使用request.setAttribute()由服务器上的某个组件存储在请求中的对象。您的代码希望通过获取属性的值来获取参数的值。