Errore utilizzando taglib JSTL XML - attributo XML non accetta alcuna espressione
Domanda
sto ottenendo il seguente errore quando provo ad usare il 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
Sto esaminando i domini di primo livello, ecc, ma se qualcuno sa che cosa questo è un me può risparmiare un po 'di tempo, che sarebbe apprezzato!
Se aiuta, ottengo questo errore l'esecuzione del codice di esempio
<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}"/>
nel mio /server-side-transform.jsp - le mie direttive taglib sono:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/xml" prefix="x" %>
ed io ho standard.jar e jstl.jar in / WEB-INF / lib.
Soluzione
Il codice è in ripresa una versione "corretta" di x-1_0.tld, probabilmente a causa di problemi di classpath. Vedo per esempio sul mio percorso di classe in corso, ho una versione di X-1_0.tld che permette di runtime-espressioni $ {} sintassi di questo tag e uno che non lo fa. L'uno in standard.jar non consente espressioni EL, mentre quello che ho in molo fa.
Altri suggerimenti
ho scoperto che la documentazione Sun riferisce alla URI come
http://java.sun.com/jsp/jstl/xml
Il tag viene ora correttamente chiamato, quindi questa è stata la causa del problema; però io sono sempre un NullPointerException in doEndTag () ... ho hum
Non esattamente, si dovrebbe usare
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
per utilizzare JSTL 1.1.
Purtroppo i file standard.jar include molte versioni di * tag .tld per es.
- 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
in modo da utilizzare
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
dici al jsp utilizzare specificamente JSTL 1.1 che corregge btw il problema di cui sopra, se questo non funziona provare a utilizzare
<%@ page isELIgnored="false" %>
che racconta fondamentalmente jsp per valutare EL.
/ SRM
Con il seguente codice:
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
Al posto di:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
Mi rendo conto che questa domanda è stato chiesto un po 'di tempo fa, ma ho appena incontrato lo stesso problema. Nel mio caso, l'esempio seguivo mi ha indirizzato da usare:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
Quando devo Sono stato con:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
fissavo la soluzione per un po 'prima che il più jsp nella uri spuntato fuori di me.
variazione <% @ taglib prefix = "c" uri = "http://java.sun.com/jstl/core" %> non è giusto per me. per il mio progetto (versione web-app = "3.0") IDE (MyEclipse) Vedo il file di configurazione del x.tld.There è il falso di select che non permettono il prescelto saputo ritrovare $ {} o <% =%>. Così ho avuto un modo per ingannare nel web.xml.
-
<jsp-config> <taglib> <taglib-uri>/huang</taglib-uri> <taglib-location>/WEB-INF/x.tld</taglib-location> </taglib> </jsp-config>
aggiungere al web.xml -
dichiarare il nuovo nome taglib-url "Huang" per il mio file jsp in questo modo:
<%@ taglib prefix="x" uri="/huang" %>
-
per use
<x:out select="$casexml//案例//${node.name }" />
posso ottenere il risultato giusto