【问题标题】:Accessing bean from Jsp从 Jsp 访问 bean
【发布时间】:2013-05-18 11:33:33
【问题描述】:

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

遇到问题... 我正在使用这样的 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 设置值后,我试图从名为 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 的值无效。

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

谢谢。

【问题讨论】:

  • @JB 谢谢你的帮助。我也已经试过了。刚才我用这两种方法在 netbeans 中尝试了同样的例子,但要么我得到“null”,要么什么都没有
  • -1 表示未针对与原始问题完全无关的新问题发布新问题(或至少使用后续信息编辑现有问题)。
  • @RaviThapliyal 我在 cmets 中更新了你的答案,如果你检查过的话。无论如何,感谢您让我知道我必须更新问题而不是发表评论。

标签: jsp servlets javabeans


【解决方案1】:

鉴于错误消息,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 特殊字符的额外优势。

【讨论】:

  • 感谢您的帮助。我也已经试过了。刚才我在 netbeans 中尝试了两种方法的相同示例,但要么我得到“null”,要么什么都没有。我通过记事本粘贴相同的代码并通过 TOmcat 手动运行应用程序,这次我收到错误消息:javax.el.PropertyNotFoundException: Property 'firstName' not readable on type test.UserBean。
  • 我按照你所说的使用 netbeans 没有输出值。同时我尝试了同样的事情,这次没有 Netbeans 我从之前的评论中得到同样的错误:javax.el.PropertyNotFoundException: Property 'firstName' not readable on type test.UserBean
  • 你确定你的getter是公开的吗?你确定它拼写为 getFirstName() 吗?你确定这个类已经编译好并出现在 WEB-INF/classes 下吗?
  • 我忘记了该类的公共访问说明符,该说明指定错误已经消失,但仍然没有在屏幕上打印输出(JSP 页面)。方法是公开的.. getFirstName() 也拼写正确.. 根据我之前指定的包编译并放置在 WEB-INF/classes/test 下
  • 在浏览器中检查页面来源。确保它不包含&lt;c:out ...&gt;。如果是这样,则意味着您忘记在 JSP 页面顶部正确声明核心标记库。还可以考虑将 ${user.firstName} 放在页面中。请注意,它不会对名字进行 html 转义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 2016-11-24
  • 1970-01-01
相关资源
最近更新 更多