Альтернатива для fn: startWith (var, 'value') - jsp - PullRequest
0 голосов
/ 19 января 2011

У меня в приложении есть этот фрагмент кода:

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

Но я просто узнаю, что мне не разрешено использовать любую версию выше 1.0 стандарта taglib.

Есть ли у меня хорошая альтернатива для использования здесь?

1 Ответ

4 голосов
/ 20 января 2011

Создайте функцию 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>
...