2012-08-16 89 views
1

我想从JSP中删除脚本。 在我的JSP中,我有一个scriplet作为如何在视图中获取JSP请求和响应Bean

<%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(){  
    } 

} 
+0

你可以发布'viewBean'类,并显示你如何在jsp中使用这个类? – mabbas 2012-08-16 08:48:12

+0

使用* servlet *代替JSP。发布*相关的*代码,这样任何人都可以帮助你。 – adatapost 2012-08-16 08:48:13

+0

如何在您的视图bean中调用setResponse方法? – 2012-08-16 09:00:08

回答

0

您可以使用页面指令摆脱小脚本的上面:

<%@ 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; 
} 
在bean类

0

首先,实例化你的bean时,你应该参考你的java bean类的完全限定域名(即,包名类名)如下:

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

在另一方面,<jsp:setProperty property="*" />文档说以下内容:

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

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

没有什么在解释有关的注射隐含对象的(请求和响应是隐式JSP对象,而不是请求参数),和你不应该使用任何对象在你的豆代码

如果你只是想设置的内容类型,然后使用JSP指令:

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

但是,如果你想使更多的复杂的操作,那么你应该使用一个Servlet或过滤器。