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.

È stato utile?

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.

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

  2. dichiarare il nuovo nome taglib-url "Huang" per il mio file jsp in questo modo:

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

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

    posso ottenere il risultato giusto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top