我在这个论坛上搜索过但没有得到合适的解决方案。如果错误地认为这个是重复的那么抱歉。
来问题...... 我正在使用像这样的servlet设置我的一个HTML中的值 index.html的代码
<FORM METHOD="POST" ACTION="user">
What's your name? <INPUT TYPE="TEXT" NAME="username" SIZE=20>`
servlet的代码
package test;
......
UserBean ub = new UserBean();
String name = request.getParameter("username");
ub.setFirstName(name);
request.setAttribute("user",ub);
RequestDispatcher rd=request.getRequestDispatcher("/getJsp.jsp");
rd.forward(request,response);
servlet和bean都放在名为test的包中。
UserBean的代码:
private String firstName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
System.out.println(firstName);
}
从bean中我可以在服务器控制台上打印正确的name值。 在设置servlet中的值之后,我试图从JSP中获取名为getJsp.jsp的bean值
getJsp.jsp
<table>
<jsp:useBean id="user" type="test.UserBean" class="test.UserBean" scope="request" >
<tr>
<td> Id : </td>
<td> <jsp:getProperty name="user" property="firstName"/></td>
</tr>
</jsp:useBean>
</table>
从JSP访问bean属性时,我收到以下错误:
org.apache.jasper.JasperException:/getJsp.jsp(line:10,column:1)useBean类属性UserBean的值无效。
我无法理解此错误代码中的问题。 请帮帮我。
谢谢。
答案 0 :(得分:4)
鉴于错误消息,似乎JSP的实际代码使用class="UserBean"
而不是class="test.UserBean"
。
但更重要的是,在搜索答案时你没有发现任何东西的原因是你正在实现你的JSP,就像在JSP领域中没有任何改变超过10年。 jsp:useBean
和其他jsp:xxx
标记已完全过时。学习如何使用JSP EL和JSTL,并通过
<table>
<tr>
<td> Id : </td>
<td><c:out value="${user.firstName}"/></td>
</tr>
</table>
这将具有转义用户名中的HTML特殊字符的额外优势。