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