0

我对 Tomcat7 和我的应用程序有疑问。

我会创建一个bean并设置一个属性。我将在另一个 jsp(get) 中使用相同的属性,而无需重新创建 bean。我用范围“会话”声明了 bean,但是当我尝试获取该属性时,它为空。为什么?我错了什么?

在我的网络应用程序中,我有:

test1.jsp

call test2.jsp and pass the parameter "name"="mm"

test2.jsp

<jsp:useBean id="sBean" scope="session" class="my.package.SessionBean" />
<jsp:setProperty name="sBean" property="*" />

属性“name”的值是正确的“mm”

test3.jsp

<jsp:useBean id="sBean" scope="session" class="my.package.SessionBean" />
<% sBean.getName() %>

属性“name”的值为 NULL,而不是“mm”

public Sessionbean implements Serializable
{
  private String name;
  public SessionBean(){}
  //get and set of name
}

在tomcat6中同样的事情完美地工作

4

2 回答 2

0

我认为原始页面几乎是好的。
test3.jsp 中的scriptlet 缺少等号(=)。它应该是 <%=sBeangetname()%>。
它应该是 ()IS/GET) 字段名(或伪字段名)一个公共方法名。包含“(SessionBean)session.getAttribute(“sBean”)”的答案有效。但它不使用 JSP 中包含的 bean 机制。因此,这是错误的。

于 2013-04-03T19:43:55.493 回答
0

我不确定为什么这适用于 tomcat6 而不是 tomcat7,但我认为如果你在 test3.jsp 中进行更改:

<% sBean.getName() %> 

至:

<% SessionBean testBean = (SessionBean) session.getAttribute("sBean"); //try changing name of SessionBean too so it doesn't conflict with the useBean name
   testBean.getName();
%>

它应该工作。或者,您可以使用:

<jsp:getProperty name="sBean" property="name" />

更新 我把两个 JSP 页面放在一起。我在 tomcat 7 中快速测试了它,它对我有用。虽然我没有做表格,但我认为这是一般的想法。你是这样设置的吗?

test1.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

<%@ page import="my.project.SessionBean" %>
<jsp:useBean id="sBean" scope="session" class="my.project.SessionBean" />


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
SessionBean testBean = (SessionBean) session.getAttribute("sBean");
testBean.setName("Nate");
pageContext.forward("test2.jsp"); //forward to test2.jsp after setting name

%>
<jsp:getProperty name="sBean" property="name" />

</body>
</html>

test2.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<jsp:useBean id="sBean" scope="session" class="my.project.SessionBean" />
<%@ page import="my.project.SessionBean" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<p>page 2</p>
<p>from jsp tag</p>
<jsp:getProperty name="sBean" property="name" /><br />

<p> from scriptlet</p>
<%
SessionBean testBean = (SessionBean) session.getAttribute("sBean");
out.print(testBean.getName());
%>

</body>
</html>
于 2012-08-28T14:59:34.997 回答