我有一个XML文件,其中包含我的数据库数据,可输出网页所需的内容
目前我正在使用JSTL
在页面中实现博客文章我的XML输出是:
<articles>
<article author="Some Author" group="City Name" id="1" title="Article Title">
<tags>
Accessories, Articles, Beauty, Bridal Wear, Fashion, bouquets, gowns, hair styles, make-up, make-up tips, Photography, venue,
</tags>
<content>
<![CDATA[Article Content HTML]]>
</content>
</article>
</articles>
我需要根据特定标签过滤文章。 我已经尝试过以这种方式使用循环:
<x:forEach select="$doc/WGBE/region/articles/article" var="filteredArticle">
<x:if select="$filteredArticle/tags ='First Steps'">
<li><x:out select="$filteredArticle/@title"/></li>
</x:if>
</x:forEach>
但由于tags标签包含长刺,因此除非我始终知道完整的字符串,否则此情况会失败。
所以我尝试实现以下循环:
<x:forEach select="$doc/WGBE/region/articles/article" var="filteredArticle">
<c:set var="firstSteps" value="$filteredArticle/tags"/>
<c:if test="${fn:contains(firstSteps,'First Steps')}">
<li><x:out select="$filteredArticle/@title"/></li>
</c:if>
</x:forEach>
这会引发异常:
330: tag = 'if' / attribute = 'test': An error occurred while parsing custom action attribute "test" with value "${fn:contains(firstSteps,'First Steps')}": org.apache.taglibs.standard.lang.jstl.parser.ParseException: EL functions are not supported.
我从这里拿了示例代码: http://www.tutorialspoint.com/jsp/jstl_function_contains.htm
我对JSTL语法不太熟悉,有人请指出我正确的方向。
感谢您的帮助!
答案 0 :(得分:0)
根据您发布的taglib指令,您将引用旧版本的JSTL规范。
变化:
<%@ taglib prefix="c" uri="java.sun.com/jstl/core"; %>
要:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
另外,请确保web.xml
的顶部引用正确的servlet规范。对于2.5
,它应该是:
<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">
最后,从每个剩余的taglib指令中删除分号;
。
尝试进行这些更改,然后查看原始问题是否仍然存在。