我有一个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,我的代码也运行了。
答案 0 :(得分:4)
你没有为这个人设置一只狗。
p.setDog(d);
答案 1 :(得分:0)
您的Person
课程需要公开的setter和getter Dog
方法。您的Dog
课程需要公开的setter和getter Name
方法
E.g。
public class Person { ...
private Dog dog;
public Dog getDog () {return dog;}
.....