Frage

Ich erhalte die folgende Fehlermeldung, wenn ich versuche, die JSTL XML taglib zu verwenden:

/server-side-transform.jsp(51,0) 
According to TLD or attribute directive in tag file,
attribute xml does not accept any expressions

Ich bin auf der Suche in die tlds etc, aber wenn jemand weiß, was diese eine kann, ist mir etwas Zeit sparen, ist es klar sein würde!

Wenn es hilft, erhalte ich diesen Fehler laufen den Beispielcode

<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}"/>

in meinem /server-side-transform.jsp - meine taglib Richtlinien sind:

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

und ich habe standard.jar und jstl.jar in / WEB-INF / lib.

War es hilfreich?

Lösung

Der Code ist Kommissionierung eine "falsche" Version von x-1_0.tld up, wahrscheinlich aufgrund der Classpath Fragen. Ich sehe zum Beispiel auf meinem aktuellen Classpath, ich habe eine Version von x-1_0.tld, die Runtime-Ausdrücke $ {Syntax} in diesem Tag und einem ERLAUBT, das nicht. Der in standard.jar erlaubt keine EL Ausdrücke, während die, die ich in Anlegesteg hat.

Andere Tipps

Ich fand, dass die Sun-Dokumentation als

an den URI verweist

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

Der Tag ist nun aufgerufen korrekt wird, so war dies die Ursache des Problems; aber ich bin ein Nullpointer in doEndTag bekommen () ... ho hum

Nicht genau, sollten Sie verwenden

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

JSTL 1.1 verwenden.

Leider sind die standard.jar Dateien enthält viele Versionen von * .tld Tag für zB.

  • c-1_0-rt.tld
  • c-1_0.tld
  • c.tld
  • fmt-1_0-rt.tld
  • fmt-1_0.tld
  • fmt.tld
  • fn.tld
  • permittedTaglibs.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

so durch mit

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

sagen, die jsp speziell JSTL verwenden 1.1, die btw das obige Problem behebt, wenn dies nicht funktioniert, versuchen Sie es mit

<%@ page isELIgnored="false" %>

, die im Grunde jsp erzählt EL zu bewerten.

/ srm

Verwenden Sie den folgenden Code ein:

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

Statt:

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

Ich weiß, diese Frage wurde gebeten, eine ganze Weile her, aber ich lief in das gleiche Problem. In meinem Fall war das Beispiel, das ich führe mich folgend zu verwenden:

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

Wenn ich habe mit sollte:

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

Ich war für eine Weile an der Lösung starre, bevor die zusätzliche jsp in der uri bei mir tauchte aus.

Veränderung <% @ taglib prefix = "c" uri = "http://java.sun.com/jstl/core" %> ist für mich nicht richtig. für mein Projekt (Web-App-version = "3.0") IDE (MyEclipse) Ich sehe die Konfigurationsdatei von x.tld.There die falschen ausgesuchter ist der {} oder <% =%> nicht dem select Apperance $ ermöglichen. Also habe ich einen Weg in der web.xml zu betrügen.

  1. <jsp-config> <taglib> <taglib-uri>/huang</taglib-uri> <taglib-location>/WEB-INF/x.tld</taglib-location> </taglib> </jsp-config> in der web.xml

  2. erklären den neuen taglib-URL-Namen "huang" zu meiner jsp-Datei wie folgt:

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

  3. use<x:out select="$casexml//案例//${node.name }" />

    Ich kann das richtige Ergebnis bekommen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top