Ошибка при использовании JSTL XML taglib - атрибут xml не принимает никаких выражений

StackOverflow https://stackoverflow.com/questions/377513

  •  22-08-2019
  •  | 
  •  

Вопрос

Я получаю следующую ошибку, когда пытаюсь использовать JSTL XML taglib:

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

Я изучаю tld и т.д., Но если кто-нибудь знает, что это такое, и может сэкономить мне немного времени, буду признателен!

Если это поможет, я получаю эту ошибку, выполняя пример кода

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

в моем /server-side-transform.jsp - мои директивы taglib являются:

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

и у меня действительно есть standard.jar и jstl.jar в /WEB-INF/lib.

Это было полезно?

Решение

Ваш код выдает "неправильную" версию x-1_0.tld, вероятно, из-за проблем с classpath .Например, я вижу в моем текущем пути к классу, что у меня есть одна версия x-1_0.tld, которая ДОПУСКАЕТ выражения времени выполнения ${syntax} в этом теге, и другая, которая этого не делает.Тот, что в standard.jar не допускает выражения EL, в то время как тот, который у меня есть в jetty, допускает.

Другие советы

Я обнаружил, что документация Sun ссылается на URI как

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

Тег теперь вызывается правильно, так что это и стало причиной проблемы;однако я получаю исключение NullPointerException в doEndTag()...хо - хум

Не совсем, вы должны использовать

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

использовать JSTL 1.1.

К сожалению, standard.jar файлы содержат много версий тега *.tld, например.

  • c-1_0-rt.tld
  • c-1_0.tld
  • c.tld
  • fmt-1_0-rt.tld
  • fmt-1_0.tld
  • fmt.дву
  • fn.дву
  • Разрешенные теги.tld
  • свободный от сценариев.tld
  • sql-1_0-rt.tld
  • sql-1_0.tld
  • sql.tld
  • x-1_0-rt.tld
  • x-1_0.tld
  • x.дву

итак, используя

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

вы указываете jsp специально использовать JSTL 1.1, который, кстати, устраняет вышеуказанную проблему, если это не сработает, попробуйте использовать

<%@ page isELIgnored="false" %>

который в основном говорит jsp оценить EL.

/srm

Используйте следующий код:

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

Вместо того , чтобы:

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

Я понимаю, что этот вопрос был задан довольно давно, но я только что столкнулся с той же проблемой.В моем случае пример, которому я следовал, подсказал мне использовать:

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

Когда я должен был использовать:

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

Я некоторое время смотрел на решение, прежде чем дополнительное jsp в выскочившем у меня uri.

изменение <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core " %> мне не подходит.для моего проекта (версия веб-приложения = "3.0") IDE (MyEclipse) Я вижу файл конфигурации x.tld.Существует значение false для select, которое не допускает появления select ${} или <%=%>.Итак, у меня есть способ обмануть в web.xml.

  1. <jsp-config> <taglib> <taglib-uri>/huang</taglib-uri> <taglib-location>/WEB-INF/x.tld</taglib-location> </taglib> </jsp-config> добавить к web.xml

  2. объявите новое имя taglib-url "huang" в моем jsp-файле следующим образом:

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

  3. для использования<x:out select="$casexml//案例//${node.name }" />

    Я могу получить правильный результат

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top