1

我想从 JSP 中删除脚本。在我的 JSP 中,我有一个脚本为

<%response.setContentType("text/xml");%>

我创建了一个视图 bean并创建了一个属性,HttpServletResponse response 并为此属性添加了 getter/setter。

当我试图获得响应时ViewBean,它会以null. 有什么建议可以避免这种情况NullPointerException吗?

我的 JSP 代码是:

<jsp:useBean id="test" class="someBean" />
<jsp:setProperty name="test" property="*" />
<jsp:getProperty name="test" property="response" />

ViewBean 代码是:

package test.here;

import java.sql.*;
import java.util.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ibm.commerce.server.WcsApp;
import com.ibm.commerce.server.JSPHelper;

public class SomeBean {
    String punchOutRes = null;
    HttpServletResponse response;
    HttpServletRequest request;
    String test="Hello";
    public HttpServletResponse getResponse() {
        return response;
    }

    public void setResponse(HttpServletResponse response) {
        this.response = response;
    }

    public HttpServletRequest getRequest() {
        return request;
    }

    public void setRequest(HttpServletRequest request) {
        this.request = request;
    }

    public String getPunchOutRes() {    

           response.setContentType("text/xml");
           return "testing";       
    }
    public String getTest(){    
    }

}
4

2 回答 2

0

首先,在实例化你的 bean 时,你应该引用你的 java bean 类的完整限定名(即包名加上类名),如下所示:

<jsp:useBean id="test" class="test.here.SomeBean" />

另一方面,<jsp:setProperty property="*" />文档说明如下:

将请求对象参数(称为请求参数)中的所有值存储在匹配的 Bean 属性中。Bean 中的属性名称必须与请求参数匹配。参数名称通常来自 HTML 表单的元素,而值来自用户输入的数据。

请求参数的值始终是字符串类型。String 值被转换为其他数据类型,因此它们可以存储在 Bean 属性中。允许的 Bean 属性类型及其转换方法如表 1-1 所示。

该解释中没有关于隐式对象注入的任何内容(请求和响应是隐式 JSP 对象,而不是请求参数),并且您不应该在 bean 代码中使用任何这些对象

如果您只想设置内容类型,请使用 JSP 指令:

<%@ page contentType="text/xml;charset=ISO-8859-1" %>

但是如果你想进行更复杂的操作,那么你应该使用 Servlet 或 Filter。

于 2012-08-16T09:09:13.530 回答
0

您可以使用 page 指令摆脱上面的 scriptlet:

<%@ page contentType="text/xml;charset=ISO-8859-1" %>

通常,您的 bean 代码不应包含任何 servlet 特定信息。

在 servlet 中使用:

request.setAttribute("test", myBean);
request.getRequestDispatcher("page.jsp").forward(request, response);

在 JSP 中使用:

${test.foo}

foo 出现在哪里

public String getFoo() {
    return foo;
}

在豆类中。

于 2012-08-16T09:08:04.313 回答