【问题标题】:JSTL filter content based on fn:containsJSTL 基于 fn:contains 过滤内容
【发布时间】: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 函数中是否正确。

标签: java xml jsp jstl


【解决方案1】:

根据您发布的 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 指令中删除分号 ;

尝试进行这些更改,然后查看原始问题是否仍然存在。

【讨论】:

    猜你喜欢
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2013-04-17
    • 2015-12-26
    • 1970-01-01
    相关资源
    最近更新 更多