如何在<jsp:usebean> </jsp:usebean>中使用相同的对象名称

时间:2013-04-17 05:03:54

标签: jsp servlets jsp-tags

在编译JSP时遇到重复变量错误。请帮助我。属性的范围(会话和请求)是不同的,为什么我不能使用它? 它期望id必须是不同的,但在不同的范围内也是为什么它期望?

HttpSession hs = request.getSession();
hs.setAttribute("GrandParents",new GrandParents());

request.setAttribute("GrandParents",new GrandParents());

 <jsp:useBean id="GrandParents" type="test.bean.GrandParents" class="test.bean.GrandParents" scope="request"/>
     Name in JSP Request tag is: <jsp:getProperty name="GrandParents" property="name" />

<jsp:useBean  id ="GrandParents" type="test.bean.GrandParents" class="test.bean.GrandParents" scope="session"/>
 Name in JSP Request tag is: <jsp:getProperty name="GrandParentss" property="name" />

1 个答案:

答案 0 :(得分:2)

id用于指定用于引用bean的变量的名称。所以上面的代码相当于

GrandParents GrandParents = (GrandParents) request.getAttribute("GrandParents");
GrandParents GrandParents = (GrandParents) session.getAttribute("GrandParents");

这是无效的,因为它定义了两个具有相同名称的变量。

jsp:useBean无论如何都不应该使用多年。学习JSP EL和JSTL,然后完成

Name in JSP Request is: ${requestScope.GrandParents.name}
Name in JSP Session is: ${sessionScope.GrandParents.name}

此外,惯例是以与Java局部变量相同的方式命名属性:以小写字母开头。