繁体   English   中英

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

[英]set Java class Object values into JSP Page

我想将 Java 类对象值设置到 JSP 页面中。 我的 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 一起使用。

问题可能在于您发送请求的方式。 在您的 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. 即使您在 Servlet 代码中没有对它做任何有用的事情,为什么JSONObject创建JSONObject
  2. 当您定义 Java 类型(类、接口等)时,在名称中使用Test_Object命名而不是下划线:使用TestObject代替Test_ObjectfirstName代替first_name 在这里,您将找到 Java 的命名约定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM