一个JSP获取org.xml.sax.SAXParseException;属性" var"已经为元素" c:set"指定了

时间:2016-03-09 16:03:57

标签: jsp jstl

我是Java服务器开发的新手,我正在将用ColdFusion编写的Web应用程序转换为Glassfish 4上的Java EE Web应用程序。这个应用程序是JSP重的(最好使用servlet)。这是设计而不是我的决定。

错误是:

  

org.apache.jasper.JasperException:

PWC6170:来自> TagLibraryValidator for sql的验证错误消息

null:org.xml.sax.SAXParseException; > lineNumber:1726; columnNumber:3;属性" var"已为>元素" c:set"指定。

看来这些极少数的JSP不接受taglib引用。这是一个例子(在所有文件中都相同):     <%@ taglib uri =" http://java.sun.com/jsp/jstl/core"前缀=" C" %GT;

我发现如果我删除&#34; jsp /&#34; URI属性的一部分,错误消失(但我不能在<c:set>标签中使用EL表达式)。所以我想知道我的Web容器中是否有两个不同版本的JSTL?

这是我的web.xml(删除了所有servlet的底部部分):

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

许多(数百个)JSP可以正常使用这个taglib,它们处于混合导向/位置,因此我不知道为什么会发生这种情况。帮助

2 个答案:

答案 0 :(得分:0)

很抱歉回答我自己的问题,但我发现了这个问题。有一个c:set标签,读取

<c:set var="x" var="data" />

而不是

<c:set var="x" value="data" />

这很不寻常,因为页面没有将标记行标记为错误,而堆栈跟踪(虽然它确实提到了之前定义的var属性)指向了taglib声明。我在Netbeans 8.0.2编程。

Idk,如果有其他人使用谷歌搜索,我希望它有所帮助!

答案 1 :(得分:-1)

您的导入“c”前缀将在此处搜索

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

你说你的taglibs在不同的目录中吗? 所以使用另一个导入 或者创建一个新文件夹并将所有这些文件夹粘贴到那里并仅使用1个导入 或者在调用taglib时设置directiories