Pregunta

Estoy recibiendo el siguiente error al intentar utilizar 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 los dominios de primer nivel, etc, pero si alguien sabe lo que este es un me puedo ahorrar algo de tiempo, sería apreciada!

Si ayuda, me sale este error al ejecutar 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.

¿Fue útil?

Solución

Su código está recogiendo una versión "incorrecta" de X-1_0.tld, probablemente debido a problemas de rutas de clases. Puedo ver por ejemplo en mi ruta de clases actual, tengo una versión de X-1_0.tld de tiempo de ejecución que permite expresiones $ {} de sintaxis en esta etiqueta y uno que no lo hace. El que está en standard.jar no permite expresiones EL, mientras que la que tengo en el embarcadero hace.

Otros consejos

He encontrado que la documentación de Sun se refiere a la URI como

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

La etiqueta ahora está siendo llamado correctamente, así que esta era la causa del problema; Sin embargo estoy recibiendo una NullPointerException en doEndTag () ... ho hum

No exactamente, se debe utilizar

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

para utilizar JSTL 1.1.

Por desgracia los archivos standard.jar incluye muchas versiones de la etiqueta * .tld para, 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
  • 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

así que usando

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

le dice al JSP a utilizar específicamente JSTL 1.1 que soluciona por cierto el problema anterior, si esto no funciona, trate de usar

<%@ page isELIgnored="false" %>

que básicamente dice JSP para evaluar EL.

/ SRM

Utiliza 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 que pregunta fue hecha hace bastante tiempo, pero me acabo de encontrar con el mismo problema. En mi caso, el ejemplo que me seguía refiere al uso:

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

Cuando yo debería haber estado usando:

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

Me estaba mirando a la solución durante un tiempo antes de que el estiramiento JSP en la URI apareció en mí.

Cambio <% @ taglib prefix = "c" uri = "http://java.sun.com/jstl/core" %> no está bien para mí. para mi proyecto (versión web-app = "3.0") IDE (MyEclipse) Veo el archivo de configuración de x.tld.There es la falsa de select que no permiten el selecto apariencia $ {} o <% =%>. Así que tengo una manera 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> añadir a web.xml

  2. declarar el nuevo nombre taglib-url "huang" a mi archivo JSP como esto:

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

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

    Puedo obtener el resultado correcto

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top