在java中我们连接字符串可以直接这样写String str=str1+str2,在jsp中用el表达式的话${1+2}结果为3,而${'xxx'+'xxx'}是错的,因为el把它做运算了,会抛出异常java.lang.NumberFormatException: For input string: "xxx",但很多时候我们可能会有这样的需求,所以以下简单介绍下自定义el表达式的写法。
首先建一个java类ElFuncUtil,类中有静态 方法,其功能为返回两个参数相加后的字符串。
/** * Class Description: * * @author yjde */ public class ELFuncUtil { /** * EL方法用于连接两个字符串 * * @param str1 * @param str2 * @return */ public static String append(String str1, String str2) { return str1 + str2; } }
<?xml version="1.0" encoding="UTF-8"?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee [url]http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd[/url]" version="2.0"> <tlib-version>1.0</tlib-version> <short-name>elf</short-name> <function> <description>用于连接两个字符串</description> <name>append</name> <function-class>com.ourpalm.mis.common.util.ELFuncUtil </function-class> <function-signature>java.lang.String append(java.lang.String,java.lang.String)</function-signature> <example>${elf:append(str1, str2)}</example> </function> </taglib>
最 后我们就可以直接在jsp中用我们 我们自定义的el表达式了,在使用前别忘了在jsp中导入tld。
<%@ taglib prefix="elf" uri="/WEB-INF/tlds/elfunc.tld"%>
<c:out value="${elf:append(param.str1, param.str2)}"/>