【发布时间】:2013-12-20 17:35:44
【问题描述】:
我有一个包含我的数据库数据的 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 语法不太熟悉,请有人指出正确的方向。
感谢您的帮助!
【问题讨论】:
-
你能把你的
web.xml和taglib指令贴在你的jsp顶部吗? -
感谢您的回复。不幸的是我不能发布我的 web.xml 但这里是 taglib 指令: java.sun.com/jstl/xml" %> java.sun.com/jstl/core " %> java.sun.com/jsp/jstl/functions" %> 我通过更改数据模型解决了这个问题,只是为文章创建了另一个包装器。但是我想知道我的语法在 fn:contains 函数中是否正确。