0

JSP 2 タグ ファイルを使用してカスタム JSP タグを作成しています。タグ内で、URL を作成するためにタグを呼び出したページを知りたいです。これは、属性を介して渡さずに可能ですか?

4

4 に答える 4

2

request オブジェクトが実際に利用可能であることが判明しましたが、タグの EL 部分でのみ利用可能です。したがって、これは機能します:

<form action="${pageContext.request.requestURI}">

しかし、これではありません:

<form action="<%=request.requestURI%>">

またはこれ:

<form action="<%=pageContext.request.requestURI%>">
于 2008-11-13T21:42:47.840 に答える
1

タグ コード内で、リクエスト オブジェクトとその URL を調べて、そこからページを判断できると思います。

于 2008-11-13T03:41:16.077 に答える
1

pageContextメンバー変数を介して、タグ ファイル内からリクエストにアクセスすることができます。

public class YourTag extends TagSupport {
    public int doStartTag() throws JspException {
        HttpServletRequest req = (HttpServletRequest) pageContext.getRequest();
        String pathInfo = req.getPathInfo();
于 2008-11-13T22:05:50.757 に答える
0

request オブジェクトはタグで使用できます。クラスまたはタグ ファイルのどちらを使用するかは問題ではありません。タグ ファイルでは、EL だけでなく Java スクリプトレットでも使用できます。ただし、HttpServletRequest オブジェクトではなく、ServletRequest オブジェクトとして使用できます (EL ではオブジェクトのクラスは関係ありませんが、スクリプトレットでは問題になります)。

さらに、スクリプトレットでは、プロパティ名だけでなく、完全なメソッドにアクセスする必要があります。したがって、コードは次のようになります。

<form action="<%= pageContext.getRequest().getRequestURI() %>">

しかし、getRequestURI() は HttpServletRequest [1] のメソッドであり、ServletRequest のメソッドではないため、それでも機能しません。したがって、EL を使用するか、タグ ファイルでより長いスクリプトレットを使用して、リクエスト オブジェクトをキャストします。

[1] http://java.sun.com/javaee/5/docs/api/javax/servlet/http/HttpServletRequest.html#getRequestURI()

于 2008-11-14T05:45:55.057 に答える