函数fn:substring未定义

时间:2016-04-07 17:12:19

标签: substring taglib

我遇到了JSTL标记库前缀“fn”的问题(Eclipse Luna中的webapp开发)。

我的taglibs.jspf如下:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core"      prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"       prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

和web.xml:

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <include-prelude>jspf/taglibs.jspf</include-prelude>
    </jsp-property-group>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <include-prelude>jspf/language_choice.jspf</include-prelude>
    </jsp-property-group>
</jsp-config>

在我的jsp页面中,我尝试使用JSTL的substring函数:

<a href=http://frenchsite.<c:out value="${fn:substring(language, 0, 2)}" />/" class="general-img" >

(为了在这种情况下拥有链接 - &gt; http://frenchsite.fr

language_choice.jspf文件:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<c:set var="language" value="${not empty param.language ? param.language : not empty language ? language : pageContext.request.locale}" scope="session" />
<fmt:setLocale value="${language}" />
<fmt:setBundle basename="com.myproject.resources.Messages" />

但似乎子串函数不起作用

如果我提出:<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> 页面位于页面顶部 可行...

我不明白,这个taglib已经在taglibs.jspftaglibs.jspf中定义,并在所有jsp文件中导入(参见web.xml)。

(顺便说一句,fmt前缀不会导致任何问题...)

感谢您的回答!

1 个答案:

答案 0 :(得分:0)

我直接添加了那些&lt;%@ taglib ~~&#34;文件的行有问题。 然后错误被删除。在我发现没有错误后,我再次删除了这些行。 现在看起来很好!