我是Java服务器开发的新手,正在将用ColdFusion编写的Web应用程序转换为Glassfish 4上的Java EE Web应用程序。此应用程序具有JSP的功能(最好使用servlet)。那是设计使然,而不是我的决定。
错误是:
org.apache.jasper.JasperException:
PWC6170:来自> TagLibraryValidator的SQL验证错误消息
null:org.xml.sax.SAXParseException; >行号:1726; columnNumber:3;已经为>元素“ c:set”指定了属性“ var”。
似乎这些极少数的JSP不接受taglib引用。这是一个示例(在所有文件中相同):<%@ taglib uri =“ http://java.sun.com/jsp/jstl/core” prefix =“ c”%>
我发现,如果删除URI属性的“ jsp /”部分,该错误就会消失(但后来我不能在<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正常工作,并且它们位于不同的目录/位置,因此我真的不知道为什么会这样。帮助?
很抱歉回答我自己的问题,但我发现了问题。有一个ac:set标记读取
<c:set var="x" var="data" />
代替
<c:set var="x" value="data" />
这是不寻常的,因为页面没有将标记行标记为错误,并且堆栈跟踪(虽然确实提到了先前定义的var属性)指向了taglib声明。仅供参考,我在Netbeans 8.0.2中编程。
Idk,如果其他人用谷歌搜索,希望对您有所帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句