将Java类对象值设置为JSP页面

时间:2016-10-01 08:34:14

标签: java jsp

我想将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。

1 个答案:

答案 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及更高版本。

一些小评论:

  1. 为什么要创建JSONObject,尽管你在Servlet代码中没有对它做任何有用的事情?
  2. 当您定义Java类型(类,接口,...)时,请在名称中使用camelcase而不是下划线:使用TestObject代替Test_ObjectfirstName而不是{{1 }}。 Here您将找到Java的命名约定。