当我尝试使用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
我正在调查tlds等,但如果有人知道这是什么可以节省我一些时间,我们将不胜感激!
如果有帮助,我会在运行示例代码时出现此错误
<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" %>
我在/ WEB-INF / lib中有standard.jar和jstl.jar。
答案 0 :(得分:2)
您的代码正在拾取x-1_0.tld的“不正确”版本,可能是由于类路径问题。我在我当前的类路径中看到,例如,我有一个版本的x-1_0.tld,在此标记中允许运行时表达式$ {syntax},而不是。 standard.jar中的那个不允许EL表达式,而我在jetty中的那个表达式。
答案 1 :(得分:2)
我发现Sun文档将URI称为
http://java.sun.com/jsp/jstl/xml
现在正在正确调用标记,因此这就是问题的原因;但是我在doEndTag()中得到一个NullPointerException ...哼哼
答案 2 :(得分:2)
不完全是,你应该使用
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
使用JSTL 1.1。
不幸的是,standard.jar文件包含许多版本的* .tld标记,例如。
所以使用
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
你告诉jsp专门使用JSTL 1.1哪个btw修复了上面的问题,如果这不起作用尝试使用
<%@ page isELIgnored="false" %>
基本上告诉jsp评估EL。
/ SRM
答案 3 :(得分:1)
使用以下代码:
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
而不是:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
答案 4 :(得分:0)
我意识到这个问题很久以前就被问过,但我遇到了同样的问题。就我而言,我跟随的例子指示我使用:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
当我应该使用时:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
在uri弹出的额外 jsp 之前,我正盯着解决方案一段时间。
答案 5 :(得分:0)
更改&lt;%@ taglib prefix =“c”uri =“http://java.sun.com/jstl/core”%&gt;不适合我。 对于我的项目(web-app version =“3.0”)IDE(MyEclipse) 我看到了x.tld的配置文件。选择的false是不允许选择外观$ {}或&lt;%=%&gt;。所以我有一种方法可以在web.xml中作弊。
<jsp-config>
<taglib>
<taglib-uri>/huang</taglib-uri>
<taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>
</jsp-config>
添加到web.xml
将新的taglib-url名称“huang”声明为我的jsp文件,如下所示:
<%@ taglib prefix="x" uri="/huang" %>
使用<x:out select="$casexml//案例//${node.name }" />
我可以得到正确的结果