您好我是JSP和JavaBean的新手。我正在练习编写一个应用程序,其中多个页面将共享一个javabean组件。页面“check.jsp”实例化bean并设置属性而没有任何错误。但每当我尝试在另一个jsp survey.jsp
中获取属性时,我得到错误:
HTTP状态500 - 文件:/survey.jsp(16,15)jsp:getProperty用于名为“survey”的bean。以前没有按照JSP.5.3
引入名称
我仔细检查过get和set属性中的名称与action元素中的bean id完全相同。我需要帮助
CHECK.jsp :
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<jsp:useBean id="survey" scope="application" class="appScope.SurveyBean"/>
<jsp:setProperty name="survey" property="quantity" value='<%= request.getParameter("title")%>' />
<form action="/appScope/survey.jsp" method="POST">
<h3> Thanks for your input</h3>
<h3> Please check the survey summary status if you want</h3><br/>
<input type="submit" value="Check Status" />
</form>
</body>
</html>
这是我的javabean: SurveyBean.java :
package appScope;
public class SurveyBean {
private int javaQuantity = 0;
private int csQuantity = 0;
public int getJavaQuantity()
{
return javaQuantity;
}
public int getCsQuantity()
{
return csQuantity;
}
public void setQuantity(String bookTitle)
{
try
{
if(bookTitle.equals("java"))
{
javaQuantity++;
}
if (bookTitle.equals("c"))
{
csQuantity++;
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
这里是 survey.jsp ,我收到错误:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<h1>Survey Summary</h1>
//ERROR IS HERE
Java = <jsp:getProperty name="survey" property="javaQuantity" /> <br/>
C# = <jsp:getProperty name="survey" property="csQuantity" />
</body>
</html>
答案 0 :(得分:0)
之前没有引入名称
这表明你还没有告诉你关于这个bean的JSP。在让JSP知道bean之前,您直接使用<jsp:getProperty>
。
您需要使用<jsp:useBean>
标记在 survey.jsp 中定义bean。name
标记的getProperty
属性必须与{ {1}}标记的{1}}属性:
id
但这不起作用,除非您在 check.jsp 文件的请求范围中设置名为useBean
的bean,并将该请求发布到 survey.jsp