2011-01-19 25 views
0

我有這段代碼在我的應用程序:替代的FN:startsWith(V​​AR,「值」) - JSP

<c:when test="${fn:startsWith(var,'value')}"> 
    <c:set var="other_var" value="x"></c:set> 
</c:when> 

但我只是發現,我不允許使用上述任何版本1.0的標準 taglib。

我在這裏有什麼好的選擇嗎?

+0

通過不允許誰/什麼?這一點可能是可以解決的。被強制使用JSTL 1.0意味着你正在使用一個已經有十多年曆史和多年支持的Servlet 2.3容器或更舊的容器。 – BalusC 2011-01-20 03:30:01

回答

4

自己創建一個EL功能。

package com.example; 

public final class Functions { 
    private Functions() {} 

    public static boolean startsWith(String string, String pattern) { 
     return string.startsWith(pattern); 
    } 
} 

創建/WEB-INF/functions.tld看起來像如下:

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> 

<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor"> 
    <display-name>Custom Functions</display-name>  
    <tlib-version>1.0</tlib-version> 
    <uri>http://example.com/functions</uri> 

    <function> 
     <name>startsWith</name> 
     <function-class>com.example.Functions</function-class> 
     <function-signature>boolean startsWith(java.lang.String, java.lang.String)</function-signature> 
    </function> 
</taglib> 

如下使用它:

<%@taglib uri="http://example.com/functions" prefix="f" %> 

<c:if test="${f:startsWith(var, 'value')}"> 
    ... 
</c:if>