1

スクリプトレットを使用せずにJSPで次のようなことを行う方法はありますか?

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

単純に使えない

コンテンツタイプを2か所(それぞれがの異なるブランチに)に設定する必要があり、JSPコンパイラはそのようなディレクティブを1つだけ許可するためです。

また、認証の失敗が発生したときにJSPがコンテナによってトリガーされるため、2つの別々のJSPを記述して、サーブレットでどちらかに転送することはできません。

乾杯、ドン

4

3 に答える 3

2
<%@ page language="java" contentType="text/plain" %>

編集:

MIMEタイプを条件付きで設定する必要がある場合は、次を使用できます。

<% 
if( branch condition ) { 
  response.setContentType("text/plain");
} else {
  response.setContentType("text/html"); 
}
%>

明らかに、上記は元の質問に反するスクリプトレットです。スクリプトレットを使用したくない特別な理由はありますか?

より良いアプローチは、サーブレットでブランチロジックを実行し、表示のみを処理するJSPにリクエストを転送することです。コンテンツ自体が異なる場合は、コンテンツタイプごとに1つずつ、2つの別々のJSPを使用することを選択できます。

于 2008-10-31T21:33:21.097 に答える
2

最も簡単な方法は、これを実行できるタグ ファイル タグを作成し、それを使用することです。

WEB-INF/tags ディレクトリに「setMimeType.tag」ファイルを作成します。

<%@tag description="put the tag description here" pageEncoding="UTF-8"%>
<%@ attribute name="mimeType" required="true"%>
<%
    response.setContentType(jspContext.findAttribute("mimeType"));
%>

次に、JSP でこれをヘッダーに追加します。

<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>

次に、JSP で次のことができます。

<t:setMimeType mimeType="text/plain"/>

はい、タグ ファイルはスクリプト フリーではありませんが、実際の JSP ページは IS です。あなたは私が髪を分割していると主張することができますが、私はタグファイルがカプセル化と抽象化に良いビットを提供するため、スクリプティングのようなものを置くのに最適な媒体だと思うので、私は反対します. また、他の唯一の解決策は、Java で独自の JSP タグ ハンドラーを作成することですが、これは、このような単純なものには正気ではありません。

JSP 2.0 が必要ですが、JSP タグ ファイルは JSP 開発に大きな恩恵をもたらします。

于 2008-10-31T22:13:41.360 に答える
0

text/plain-response と text/html-response は、共通点がほとんどない 2 つの非常に異なる応答のように聞こえます。

2 つの JPS を作成し、代わりにサーブレットで分岐します。

共通の要素がある場合でも、インクルードを使用できます。

于 2008-10-31T22:12:19.507 に答える