JSTL XML タグライブラリの使用中にエラーが発生しました - 属性 xml は式を受け入れません
質問
JSTL XML タグライブラリを使用しようとすると、次のエラーが発生します。
/server-side-transform.jsp(51,0)
According to TLD or attribute directive in tag file,
attribute xml does not accept any expressions
TLDS などを調べていますが、これが何であるかを知っている人がいたら、時間を節約できると助かります。
役に立った場合、サンプルコードを実行するとこのエラーが発生します
<c:set var="xml">
<paragraph>
This document uses <bold>unusual</bold> markup,
which we want to replace with <bold>HTML</bold>.
</paragraph>
</c:set>
<c:set var="xsl">
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="paragraph">
<p><xsl:apply-templates/></p>
</xsl:template>
<xsl:template match="bold">
<b><xsl:value-of select="."/></b>
</xsl:template>
</xsl:stylesheet>
</c:set>
<x:transform xml="${xml}" xslt="${xsl}"/>
私の /server-side-transform.jsp では、taglib ディレクティブは次のとおりです。
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/xml" prefix="x" %>
/WEB-INF/lib には standard.jar と jstl.jar があります。
解決
あなたのコードは、おそらくクラスパスの問題のために、X-1_0.tldの「間違った」のバージョンを拾っています。私は、このタグとしないもので、ランタイム・表現の$ {構文}を可能にするX-1_0.tldの1つのバージョンを持って、私の現在のクラスパス上のインスタンスを参照します。私は桟橋で持っている1が行う一方、standard.jarに1人が、EL式を許可していません。
他のヒント
私は、Sunのマニュアルは、
としてURIを参照することがわかりましたhttp://java.sun.com/jsp/jstl/xmlする
タグが正しく呼び出されているので、これは問題の原因でした。しかし、私はのdoEndTag()でNullPointerExceptionが取得しています... HOハム
正確には違いますが、使用する必要があります
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
JSTL 1.1を使用します。
残念ながら、standard.jar ファイルには、たとえば、次のような多くのバージョンの *.tld タグが含まれています。
- c-1_0-rt.tld
- c-1_0.tld
- c.tld
- fmt-1_0-rt.tld
- fmt-1_0.tld
- fmt.tld
- fn.tld
- allowedTaglibs.tld
- スクリプトフリー.tld
- sql-1_0-rt.tld
- SQL-1_0.tld
- SQL.tld
- x-1_0-rt.tld
- x-1_0.tld
- x.tld
したがって、を使用して
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
JSP に JSTL 1.1 を特に使用するように指示すると、上記の問題が修正されます。これが機能しない場合は、次を使用してみてください
<%@ page isELIgnored="false" %>
これは基本的に jsp に EL を評価するように指示します。
/srm
次のコードを使用します:
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
の代わりに:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
私はこの質問はかなりしばらく前に頼まれたが、私はちょうど同じ問題に遭遇した実現します。私の場合、私は次られた例では、私が使用するように指示ます:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
場合は、私が使用している必要があります:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
私は前にしばらくのためのソリューションを見つめた余分の JSP のURIが私に飛び出しでます。
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> を変更するのは私にとっては適切ではありません。私のプロジェクト(Web-Appバージョン= "3.0")IDE(myEclipse)x.tldの構成ファイルが表示されます。そこで、web.xmlでチートする方法がありました。
<jsp-config> <taglib> <taglib-uri>/huang</taglib-uri> <taglib-location>/WEB-INF/x.tld</taglib-location> </taglib> </jsp-config>
web.xmlに追加次のように、新しい taglib-url 名「huang」を jsp ファイルに宣言します。
<%@ taglib prefix="x" uri="/huang" %>
使用する
<x:out select="$casexml//案例//${node.name }" />
正しい結果を得ることができます