我在jsp(portlet版本1)项目中有一个有效的xml字符串。
我正在尝试使用jstl标签来解析它。 包含的标签库:
<%@ page import="javax.portlet.*"%>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
目前我设置了字符串:
String activexml = (String)renderRequest.getPortletSession().getAttribute("activexml");
然后我为jsp页面设置了我的属性:
pageContext.setAttribute("activexml", activexml);
这一切都正常,这里出现了错误。当我去设置要解析的xml时。 C标签很好,没有错误返回,但x收到错误:
<c:set var="active-xml" scope="session" value="${activexml}"/>
<x:parse xml="${active-xml}" var="active"/>
javax.servlet.jsp.JspTagException:无法识别的对象提供为&#39; xml&#39;要解析的属性
我的项目中有standard.jar和jstl.jar的本地副本。任何帮助都会非常感激,我认为这是我的语法,或者我错过了一些项目设置罐或其他东西。
提前致谢。
答案 0 :(得分:1)
您的错误在声明的变量名称中。
<c:set var="active-xml" ... />
与Java类似,连字符在EL中被解释为减法运算符。 ${active-xml}
基本上会为您提供${active}
减去${xml}
的结果。
改为使用下划线。
<c:set var="active_xml" ... />
或者,只是喜欢Java代码约定并使用驼峰案例。
<c:set var="activeXml" ... />
或者,只需立即使用原始值,而无需通过<c:set>
复制。
<x:parse xml="${activexml}" ... />