2016-10-01 77 views
-2

我想将Java类对象值设置为JSP页面。 我Test_Object代码将Java类对象值设置为JSP页面

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\":\"[email protected]\",\"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的页面上,有在文本框中没有值显示。 我正在使用Eclipse Mars Mars2和Java。

+0

要在哪个服务器上部署,为什么不使用表达式语言? – ujulu

+0

@ujulu我是新来的。所以请帮我解决这个问题。 – user3441151

回答

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和更高版本。

一些小意见:

  1. 你为什么要创建JSONObject虽然你们是不是在你的servlet代码做任何有用的事情?
  2. 当您定义Java类型(类,接口...)时,请在名称中使用camelcase而不是下划线:使用TestObject而不是Test_ObjectfirstName而不是first_nameHere你会发现Java的命名约定。
+0

如果您仍然遇到问题,请给我留言。 – ujulu