0

编译 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" />
4

1 回答 1

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 局部变量相同的方式命名属性:以小写字母开头。

于 2013-04-17T07:02:54.297 回答