JSTL XML タグライブラリの使用中にエラーが発生しました - 属性 xml は式を受け入れません

StackOverflow https://stackoverflow.com/questions/377513

  •  22-08-2019
  •  | 
  •  

質問

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でチートする方法がありました。

  1. <jsp-config> <taglib> <taglib-uri>/huang</taglib-uri> <taglib-location>/WEB-INF/x.tld</taglib-location> </taglib> </jsp-config> web.xmlに追加

  2. 次のように、新しい taglib-url 名「huang」を jsp ファイルに宣言します。

    <%@ taglib prefix="x" uri="/huang" %>

  3. 使用する<x:out select="$casexml//案例//${node.name }" />

    正しい結果を得ることができます

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