【问题标题】:Simple JSP expression language code won't work简单的 JSP 表达式语言代码不起作用
【发布时间】:2014-07-10 20:58:05
【问题描述】:

我有一个 Person 类和 Dog 类。人有一条狗。我从一个简单的 html 文件将post http request 发送到 servlet。在 servlet 中,我将一个人和他的狗作为属性添加到请求中。 servlet 将此请求转发给一个 jsp,该 jsp 应该使用表达式语言或 EL 打印狗的名字。

我按照书中的所有说明进行操作,但我得到了错误的输出。请 帮我修复我的代码。

预期输出 - 狗的名字是:狗。 实际输出 - 狗的名字是:

Servlet 的 doPost -

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    Person p = new Person();
    Dog d = new Dog();

    p.setName("Man");
    d.setName("dog");

    request.setAttribute("person", p);

    RequestDispatcher view = request.getRequestDispatcher("/jsp/MyJsp.jsp");
    view.forward(request, response);

}

JSP主代码-

<html>
<body>
Dog's name is: ${person.dog.name}
</body>
</html>

Pojos 和 stacktrace 的完整代码 -

狗-

package foo;

public class Dog {

    private String name;

    public String getName() {return name;}

    public void setName(String name) {this.name = name;}

}

人 -

包 foo;

公共类人{

String name;
Dog dog;

public String getName() {return name;}
public void setName(String name) {this.name = name;}

public Dog getDog() {return dog;}
public void setDog(Dog dog) {this.dog = dog;}

}

我再次重新启动了 eclipse 和 tomcat 并且我的代码工作了。

【问题讨论】:

    标签: java jsp jakarta-ee servlets jstl


    【解决方案1】:

    你还没有为这个人设置狗。

    p.setDog(d);  
    

    【讨论】:

    • 哦!呃。为什么它不给我一个空异常来让我的生活更轻松。
    • 现在我收到错误 - HTTP Status 500 - javax.el.PropertyNotFoundException: Property 'dog' not found on type foo.Person。但是我为这个人设置了狗对象。
    • @BoratSagdiyev getter 是 getDog 还是 setter 是 setDog
    • 是的。我重建了我的项目并重新启动了 eclipse 和 tomcat 以确保。我仍然得到异常。
    • @BoratSagdiyev 你能在你的问题中发布你的 POJO 和完整的堆栈跟踪吗?
    【解决方案2】:

    您的 Person 类将需要公共 setter 和 getter Dog 方法。您的 Dog 类将需要公共 setter 和 getter Name 方法

    例如

     public class Person { ...
    
         private Dog dog;
    
         public Dog getDog () {return dog;} 
    
         .....
    

    【讨论】:

    • 是的,一切都在那里。我确实忘记在我的 servlet 中将 dog 添加到 person 中,这很愚蠢,但是 500 错误让我感到困惑。当您重新启动 Eclipse 两次时,它就会出现。谁会猜到?
    猜你喜欢
    • 2012-01-05
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多