ネストされたel変数を作成しますが、$ {foo}はmytagの最後の後に使用できます。 .TLDファイルのバージョンを短縮ネストされたEL変数
は次のとおりです。
<?xml version="1.0" encoding="UTF-8" ?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
<description>My Tags</description>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>mytaglib</short-name>
<uri>http://www.example.com/taglibs/mytaglib</uri>
<tag>
<name>mytag</name>
<tag-class>com.example.tags.MyTag</tag-class>
<body-content>JSP</body-content>
<variable>
<name-given>used</name-given>
<variable-class>java.lang.String</variable-class>
<scope>NESTED</scope>
</variable>
</tag>
</taglib>
その後、mytagというは、(私は関連するべきではありませんすべてのコードを削除しました)以下のん:
public class MyTag extends BodyTagSupport
{
// these are subtags
private JspFragment below;
private JspFragment at;
@Override
public int doStartTag() throws JspException
{
return EVAL_BODY_BUFFERED;
}
@Override
public int doEndTag() throws JspException
{
try
{
if (aBoolean)
{
below.invoke(pageContext.getOut());
}
else
{
at.invoke(pageContext.getOut());
}
}
catch (IOException e)
{
throw new JspException(e);
}
return EVAL_PAGE;
}
@Override
public void doInitBody() throws JspException
{
pageContext.setAttribute("used", "valueOfUsed");
}
@Override
public int doAfterBody() throws JspException
{
try
{
bodyContent.writeOut(bodyContent.getEnclosingWriter());
}
catch (IOException e)
{
throw new JspException(e);
}
return SKIP_BODY;
}
}
私の理解では、 doInitBody内のpageContext.setAttribute()はネストされたスコープ内にあり、doAfterBody内の実際のボディを評価する必要があります。 タグの範囲外で「使用済み」が利用可能であるにもかかわらず、そのように思われるはずです。
一般的な背景...タグは(簡略化した形)のようになります
<mytaglib:mytag>
Used is ${used}
</mytaglib:mytag>
または
<mytaglib:mytag>
<mytaglib:at>
You are at your limit, you have used: ${used}
</mytaglib:at>
<mytaglib:below>
You are below your limit, you have used: ${used}
</mytaglib:below>
</mytaglib:mytag>
どのように私はmytagというためにスコープされる{使用} $を得ることができますか?
あなたの質問は混乱しています。 '$ {foo}'はスクリプト変数ではありません。それは '<%String foo =" something "です。 %> 'これらの '$ {} 'はEL(Expression Language)と呼ばれます。また、http://stackoverflow.com/tags/el/info – BalusC
http://java.sun.com/products/jsp/syntax/2.0/syntaxref2013も参照してください。 .htmlもELのものを 'スクリプト変数'と呼んでいるようです。もっと明確になるように質問を更新しています。 EL変数のスコープをNESTEDにする方法はありますか? –