2012-08-16 67 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或過濾器。

相關問題