質問

カスタムタグで複数の属性を使用しようとしています。例:

<mytaglib:mytag firstname="Thadeus" lastname="Jones" />

TagHandlerコードの属性にアクセスするにはどうすればよいですか

役に立ちましたか?

解決

あなたの質問に対する答えではありませんが、TagHandlerは嫌いです(つまり、書いたことがない)が、タグファイル。 jspファイルを使用してカスタムタグを記述できます。あなたはおそらくそれらについて知っており、利用可能ではありません/適用されません-しかし、念のためにそれらに言及すると思いました。

他のヒント

パラメーターにアクセスするには、TagHandlerクラスでプライベートメンバーを定義し、アクセサーメソッドを提供する必要があります。

public class TagHandler extends TagSupport {
    private String firstName;
    private String lastName;

    public void setFirstName(String firstname) { firstName = firstname; }
    public void setLastName(String lastname) { lastName = lastname;}
}

TagHandler変数を介してパラメーターにアクセスできます。

public int doStartTag() throws JspException {
    pageContext.getOut().print(lastName + ", " + firstName);
}

まだ命名規則を再確認しても問題がある場合、Javaインターペッターはセッターメソッドが何であるかを推測しようとしています。したがって、パラメーターが&quot; FirstName&quot;の場合、 setメソッドは&quot; setFirstName&quot;でなければなりませんパラメータが&quot; lastname&quot;の場合設定パラメーターは&quot; setlastname&quot;でなければなりません。前者はJavaの標準の命名規則なので、前者に従うことをお勧めします。

この問題の解決策を示すために、類推してみましょう。 &quot; userName&quot;があるとします。および「パスワード」これはindex.jspから取得され、カスタムタグ属性でデータを渡す必要があります。私の場合、その動作

<body>

<%
String name=request.getParameter("name");
String password=request.getParameter("password");
%>

<%@ taglib prefix="c" uri="/WEB-INF/mytag.tld" %>

<c:logintag name="<%=name %>" password="<%=password %>"/>

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top