1

JSP からスクリプトレットを削除したい。私のJSPには、スクリプトレットがあります

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

ビュー Beanを作成し、プロパティを作成してHttpServletResponse response 、このプロパティのゲッター/セッターを追加しました。

で応答を取得しようとすると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

page ディレクティブを使用して、上記のスクリプトレットを取り除くことができます。

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

原則として、Bean コードにはサーブレット固有の情報を含めないでください。

サーブレットで次を使用します。

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 に答える
0

まず、Bean をインスタンス化するときは、Java Bean クラスの完全修飾名 (つまり、パッケージ名クラス名) を次のように参照する必要があります。

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

一方、<jsp:setProperty property="*" />ドキュメントには次のように記載されています。

要求オブジェクト パラメーター (要求パラメーターと呼ばれる) のすべての値を、一致する Bean プロパティに格納します。Bean のプロパティ名は、リクエスト パラメータと一致する必要があります。通常、パラメーター名は HTML フォームの要素から取得され、値はユーザーが入力したデータから取得されます。

リクエスト パラメータの値は、常に String 型です。String 値は他のデータ型に変換されるため、Bean プロパティに格納できます。表 1-1 に、許可されている Bean プロパティの型とその変換方法を示します。

暗黙的なオブジェクトの注入に関するその説明には何もありません(要求と応答は暗黙的な JSP オブジェクトであり、要求パラメーターではありません) 。Bean コードでこれらのオブジェクトを使用するべきではありません

コンテンツ タイプを設定するだけの場合は、JSP ディレクティブを使用します。

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

ただし、より複雑な操作を行いたい場合は、サーブレットまたはフィルターを使用する必要があります。

于 2012-08-16T09:09:13.530 に答える