我想将Java类Object值设置为JSP Page。 我的Test_Object代码
public class Test_Object {
public String email;
public String first_name;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
}
我的test.jsp页面
<%@page import="test.io.Test_Object"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>TEST</title>
</head>
<body>
<form action="loginServlet" method="post">
<table>
<tr>
<td>First Name :
<td><input type="text" value="" name="txtFirstname"
value='<%=((Test_Object) request.getAttribute("reqObj")).getFirst_name()%>' /></td>
</tr>
<tr>
<td>Email :</td>
<td><input type="text" name="txtEmail"
value='<%=request.getParameter("email")%>' /></td>
</tr>
<tr align="center">
<td colspan="2"><input type="submit" value="Submit" /></td>
</tr>
</table>
</form>
</body>
</html>
我的servlet代码
String jb = "{\"email\":\"test@xyz.com\",\"fname\":\"test01\"}";
JSONObject jsonObject = new JSONObject(jb);
Test_Object obj = new Test_Object();
obj.email=jsonObject.getString("email");
obj.first_name=jsonObject.getString("fname");
request.setAttribute("reqObj", obj);
RequestDispatcher view = request.getRequestDispatcher("/test.jsp");
view.forward(request, response);
但是当我重定向到test.jsp页面时,TextBox中没有值显示。 我正在使用Eclipse Mars 2和Java。
答案 0 :(得分:0)
问题可能在于您分派请求的方式。在您的Servlet中,您将请求发送到/otn.jsp
页面。但是您试图在test.jsp
页面中读取放在请求范围中的对象的属性。
所以你必须做以下事情:
在Servlet代码中:
RequestDispatcher view = request.getRequestDispatcher("/test.jsp");
在test.jsp
页面中更改input
元素,如下所示:
<input type="text" value="${reqObj.first_name}" name="txtFirstname"/>
<input type="text" value="${reqObj.email}" name="txtEmail" />
我在这里使用表达式语言,假设您正在使用当前的Web容器之一,例如Tomcat版本7及更高版本。
一些小评论:
JSONObject
,尽管你在Servlet代码中没有对它做任何有用的事情?TestObject
代替Test_Object
和firstName
而不是{{1 }}。 Here您将找到Java的命名约定。