jstl解析错误:javax.servlet.jsp.JspTagException:无法识别的对象提供为' xml'要解析的属性

时间:2015-08-18 14:05:47

标签: java xml jsp jstl

我在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的本地副本。任何帮助都会非常感激,我认为这是我的语法,或者我错过了一些项目设置罐或其他东西。

提前致谢。

1 个答案:

答案 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}" ... />