Pergunta

Estou recebendo o seguinte erro quando tento usar o taglib XML JSTL:

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

Eu estou olhando para o tlds etc, mas se alguém sabe o que este é um pode me salvar algum tempo, seria apreciada!

Se ajudar, eu recebo este erro ao executar o código de exemplo

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

Na minha /server-side-transform.jsp - minhas diretivas de taglib são:

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

e eu tenho standard.jar e jstl.jar in / WEB-INF / lib.

Foi útil?

Solução

Seu código está pegando uma versão "errada" do x-1_0.tld, provavelmente devido a questões de classpath. Vejo, por exemplo, no meu classpath atual, eu tenho uma versão do x-1_0.tld que permite tempo de execução-expressões $ {sintaxe} nesta tag e um que não o faz. A um em standard.jar não permite expressões EL, enquanto que o que eu tenho no cais faz.

Outras dicas

Eu achei que a documentação Sun refere-se ao URI como

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

A tag agora está sendo chamado corretamente, assim que esta foi a causa do problema; porém estou recebendo um NullPointerException em doEndTag () ... hum ho

Não exatamente, você deve usar

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

usar JSTL 1.1.

Infelizmente, os arquivos standard.jar inclui muitas versões de tag * .tld para, por exemplo.

  • 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

isso usando

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

você diz a jsp para especificamente o uso JSTL 1.1 que corrige btw o problema acima, se este não tenta de trabalho usando

<%@ page isELIgnored="false" %>

que basicamente diz jsp para avaliar EL.

/ srm

Use o seguinte código:

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

Em vez de:

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

Eu percebo esta pergunta foi feita há bastante tempo, mas eu só correu para o mesmo problema. No meu caso, o exemplo que eu estava me seguindo direcionado para uso:

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

Quando eu deveria ter vindo a utilizar:

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

Eu estava olhando para a solução por um tempo antes de o extra de jsp na URI bateu para fora para mim.

mudança <% @ taglib prefix = "c" uri = "http://java.sun.com/jstl/core" %> não é certo para mim. para o meu projeto (versão web-app = "3.0") IDE (MyEclipse) Eu vejo o arquivo de configuração de x.tld.There é a falsa de select, que não permitem a select aparência $ {} ou <% =%>. Então, eu tenho uma maneira de enganar no web.xml.

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

  2. declarar o novo nome taglib-url "huang" para o meu arquivo jsp como esta:

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

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

    Eu posso obter o resultado correto

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top