web-dev-qa-db-ja.com

オブジェクトをJSPタグに渡すにはどうすればよいですか?

オブジェクトをインスタンス化するスクリプトレットを含むJSPページがあります。キャッシュを使わずにそのオブジェクトをJSPタグに渡したいのですが。

たとえば、私はこれを達成したいと思います:

<%@ taglib prefix="wf" uri="JspCustomTag" %>

<% 
 Object myObject = new Object();
%>

<wf:my-tag obj=myObject />

キャッシュ(ページ、セッション、servletcontext)のいずれかと直接対話することを避けようとしています。むしろ、タグにそれを処理させたいと思います。

25
Joe Bienkowski

ここで探した少し異なる質問:「オブジェクトをタグファイルに渡すにはどうすればよいですか?」

回答:属性ディレクティブの「type」属性を使用してください。

<%@ attribute name="field" 
              required="true"
              type="com.mycompany.MyClass" %>

タイプ デフォルトはJava.lang.String であるため、タイプStringからフィールドが見つからないというオブジェクトフィールドにアクセスしようとすると、エラーが発生します。

38
dfrankow
<jsp:useBean id="myObject" class="Java.lang.Object" scope="page" />
<wf:my-tag obj="${myObject}" />

JSPページでスクリプトレットを使用することはお勧めしません。それはテンプレート言語の目的を殺します。

11
Adeel Ansari

元の構文は「<%=%>」を再利用することでした

そう

<wf:my-tag obj="<%= myObject %>" />

例については、 Sun Tag Libraryチュートリアルのこの部分 を参照してください。

5
Garth Gilmour

私にとって、式言語は、たとえばページコンテキストに配置するなどして、その変数にアクセスできるようにした場合にのみ機能します。

<%  Object myObject = new Object();
    pageContext.setAttribute("myObject", myObject);
%>
<wf:my-tag obj="${myObject}" />

それ以外の場合、tasはnullを受け取ります。

そして<wf:my-tag obj="<%= myObject %>" />追加の作業なしで動作します。また、<%=%>はjspコンパイル時の型検証を提供しますが、Elは実行時にのみ検証されます。

3
Pavel Feldman

「<%=%>」を使用して、タグで直接オブジェクト値を取得できます。

    <wf:my-tag obj="<%= myObject %>"/>

そのオブジェクト内の任意の変数の値を取得するには、次のような「obj.parameter」を使用して取得できます。

<wf:my-tag obj="<%= myObject.variableName %>"/>
1
Mike Clark

表現言語を使用する:

 <wf:my-tag obj = "$ {myObject}" />
0
Brian Matthews