【问题标题】:Null result being displayed using jsp使用jsp显示空结果
【发布时间】:2013-06-21 04:27:28
【问题描述】:

我是动态 web 项目概念的新手。我做了以下两个 JSP 和一个 java 类作为刚刚开始的实验。 以下是我的代码

user.java

package com;

public class User {

    private String name;
    private int Id;

    public int getId() {
        return Id;
    }

    public void setId(int id) {
        Id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

index.jsp

%@ 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>Insert title here</title>
</head>
<body>

<form action="First.jsp">

name<input type="text" name="name" />
id<input type="text" name="Id" />


            <input type="submit" value="SUBMIT" />

<jsp:useBean id="user" class="com.User" />
            <jsp:setProperty name="user" property="*"/>     




</form>

</body>
</html>

又是 First.jsp

<%@ 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>Hello</title>
</head>
<body>
    <jsp:useBean id="user" class="com.User" />
user is :<%= user.getName() %><BR>
Id is :<%= user.getId() %><BR>



</body>
</html>

但它向我显示两个值都为 null。我知道它非常简单的程序。但我没有正确理解这个概念

谢谢

【问题讨论】:

  • 您是否在某个设置属性的地方创建了用户实例?
  • 首先将变量“int Id”重命名为“int id”

标签: java jsp jakarta-ee web-applications


【解决方案1】:

移动

<jsp:useBean id="user" class="com.User" />
<jsp:setProperty name="user" property="*"/> 

index.jspFirst.jsp

请求参数提交给First.jsp,而不是index.jsp。

 <jsp:setProperty name="user" property="*"/>

使用请求参数中的属性填充用户 bean 的属性。表单提交给First.jsp,它接收请求参数。

【讨论】:

    【解决方案2】:

    First.jsp 中的jsp:useBean 使用默认构造函数创建com.User 的实例,该构造函数将nameid 都设置为null。因此,当您打印它们的值时,您会得到 null。

    【讨论】:

      【解决方案3】:

      您在会话中没有任何用户对象,所以您现在需要做的就是使用jsp:setProperty 标签!。

      useBean 标记将在session 中查找“user”的实例。

      如果实例已经存在,它将更新旧实例。否则,它将创建一个新的用户实例并将其放入会话中。

      您之前没有将user bean 放入会话中。因此创建了具有空值的新实例。

      Bean Processing in JSP

      【讨论】:

        【解决方案4】:

        您正在向 First.jsp 提交表单数据。但是在 First.jsp 中没有你正在处理/处理请求参数的地方。所以,在 First.jsp 中尝试一下:

         <jsp:useBean id="user" class="com.User" scope = "request" />
        
        <jsp:setProperty property="name" value="<%= request.getParameter("name") %>"name="user" />
        <jsp:setProperty property="Id" value="<%= request.getParameter("Id") %> name="user" />
        
         Name: <jsp:getProperty property = "name" name="user" />
         Id : <jsp:getProperty property = "Id" name="user" />
        

        【讨论】:

          【解决方案5】:

          使用 JSTL 标签。它具有默认值的默认属性。如果值为 null,则将显示默认值。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-02-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多