-1

我在这个论坛上搜索过,但没有找到合适的解决方案。如果不小心这个是重复的,那么对不起。

遇到问题...我正在使用 servlet 从我的一个 HTML 中设置值,就像 index.html 的代码一样

<FORM METHOD="POST" ACTION="user">
What's your name? <INPUT TYPE="TEXT" NAME="username" SIZE=20>`

小服务程序代码

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 设置值后,我试图从名为 getJsp.jsp 的 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 的值无效。

我无法理解此错误代码中的问题。请帮帮我。

谢谢你。

4

1 回答 1

4

鉴于错误消息,JSP 的实际代码似乎使用class="UserBean"而不是class="test.UserBean".

但更重要的是,您在寻找答案时一无所获的原因是您正在实施您的 JSP,就像 10 多年来 JSP 领域没有任何变化一样。jsp:useBean和其他jsp:xxx标签已完全过时。学习如何使用 JSP EL 和 JSTL,并将 JSP 的代码替换为

<table>
    <tr>
       <td>  Id : </td>
       <td><c:out value="${user.firstName}"/></td>
   </tr>
</table>

这将具有转义用户名中的 HTML 特殊字符的额外优势。

于 2013-05-18T11:40:53.747 回答