1

JSTL XML taglib を使用しようとすると、次のエラーが発生します。

/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 があります。

4

6 に答える 6

2

正確ではありません。使用する必要があります

<%@ 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
  • 許可されたTaglibs.tld
  • scriptfree.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"%>

上記の問題を修正するJSTL 1.1を具体的に使用するようにjspに指示します。これが機能しない場合は、使用してみてください

<%@ page isELIgnored="false" %>

これは基本的にjspにELを評価するように指示します。

/srm

于 2010-08-05T20:37:30.213 に答える
2

おそらくクラスパスの問題が原因で、コードが x-1_0.tld の「正しくない」バージョンを取得しています。たとえば、現在のクラスパスには、このタグでランタイム式 ${syntax} を許可するバージョンの x-1_0.tld と許可しないバージョンがあります。standard.jar のものは EL 式を許可していませんが、jetty のものは許可しています。

于 2008-12-18T11:21:10.030 に答える
2

Sun のドキュメントでは URI を次のように参照していることがわかりました。

http://java.sun.com/jsp/jstl/xml

タグが正しく呼び出されるようになったため、これが問題の原因でした。しかし、私は doEndTag() で NullPointerException を取得しています... うーん

于 2008-12-18T11:23:59.167 に答える
1

次のコードを使用します。

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %> 

それ以外の:

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
于 2011-04-15T11:26:14.140 に答える
0

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> を変更するのは適切ではありません。私のプロジェクト (web-app version="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 }" />

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

于 2014-11-05T12:47:46.930 に答える
0

この質問はかなり前に尋ねられたことに気づきましたが、同じ問題に遭遇しました。私の場合、私が従っていた例では、使用するように指示されました:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

私が使用していたはずのとき:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

uri の余分なjspが飛び出す前に、しばらくの間ソリューションを見つめていました。

于 2012-04-17T11:17:09.047 に答える