我在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");
答案 0 :(得分:2)
你正在使用Struts。 Struts是一个MVC框架。 MVC的一个非常简单的规则是:所有请求都转到控制器,控制器准备模型,然后转发到视图。你永远不应该有一个JSP的链接。永远是控制器。您的所有链接都应以.do
结尾。绝不使用.jsp
。
此外,您将请求参数与请求属性混淆。请求参数是浏览器使用表单发送到服务器的字符串,或带有查询字符串的链接(例如/foo.do?bar=baz
)。请求属性是使用request.setAttribute()
由服务器上的某个组件存储在请求中的对象。您的代码希望通过获取属性的值来获取参数的值。