xml jstl xslt el taglib

Error al utilizar JSTL XML taglib: el atributo xml no acepta expresiones



xslt (6)

Encontré que la documentación de Sun se refiere a la URI como

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

La etiqueta ahora se está llamando correctamente, por lo que esta fue la causa del problema; sin embargo, estoy obteniendo una NullPointerException en doEndTag () ... ho hum

Obtengo el siguiente error cuando trato de usar el taglib JSTL XML:

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

Estoy buscando en el TLD, etc., pero si alguien sabe lo que es esto, puede ahorrarme algo de tiempo, ¡lo agradecería!

Si ayuda, obtengo este error ejecutando el código de ejemplo

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

en mi /server-side-transform.jsp - mis directivas taglib son:

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

y tengo standard.jar y jstl.jar en / WEB-INF / lib.


Su código está recogiendo una versión "incorrecta" de x-1_0.tld, probablemente debido a problemas de classpath. Veo, por ejemplo, en mi classpath actual, tengo una versión de x-1_0.tld que PERMITIR expresiones de tiempo de ejecución $ {syntax} en esta etiqueta y otra que no. El que está en standard.jar no permite expresiones EL, mientras que el que tengo en el embarcadero lo hace.


No exactamente, deberías usar

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

usar JSTL 1.1.

Lamentablemente, los archivos standard.jar incluyen muchas versiones de la etiqueta * .tld, por ejemplo.

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

entonces al usar

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

le dices a jsp que use específicamente JSTL 1.1, que por cierto soluciona el problema anterior, si esto no funciona intenta usar

<%@ page isELIgnored="false" %>

que básicamente le dice a jsp que evalúe EL.

/ srm


Usa el siguiente código:

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

En lugar de:

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


Me di cuenta de que esta pregunta fue hecha hace bastante tiempo, pero me encontré con el mismo problema. En mi caso, el ejemplo que estaba siguiendo me indicó usar:

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

Cuando debería haber estado usando:

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

Estaba mirando la solución por un tiempo antes de que el jsp extra en el uri apareciera en mí.


cambiar <% @ taglib prefix = "c" uri = "http://java.sun.com/jstl/core"%> no es correcto para mí. para mi proyecto (versión de la aplicación web = "3.0") IDE (MyEclipse) Veo el archivo de configuración de x.tld. Existe el falso de seleccionar que no permite seleccionar la apariencia $ {} o <% =%>. Así que conseguí una forma de hacer trampa en el web.xml.

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

  2. Declaro el nuevo nombre de taglib-url "huang" a mi archivo jsp de esta manera:

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

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

    Puedo obtener el resultado correcto