日期:2014-05-16  浏览次数:20486 次

jstl和struts2标签截取字符串
jstl
今天在做模块的时候列表页面突然被一个备注给撑开很宽,样式全变了。后来在网上找了些相关资料,原来jstl标签是可以截取字符串的,主要有两种方法:

一、用jstl原有的标签库中方法(fn函数)

      <c:set var="testStr" value="做一个截取字符串长度的测试"
      <c:choose>
          <c:when test="${fn:length(testStr) > 10}">
              <c:out value="${fn:substring(testStr, 0, 10)}......" />
          </c:when>
         <c:otherwise>
            <c:out value="${testStr}" />
          </c:otherwise>
      </c:choose>
注:记得要引用标签库
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

二、自定义函数

jstl自带的标签有时候可能满足不了我们的需求,这时我们就要用到自定义函数。
新建一个类,定义好所需要的方法:

Java代码:

package com.uisk.util;  
 
/**
* 定义EL自定义函数
*
*/ 
public class UFunction {  
 
    /**
      * 获取一个字符串的长度
      *
      * @param str
      * @return int
      */ 
    public static int getLen(String str) {  
        return str.length();  
     }  
 
    /**
      * 截取字符串
      *
      * @param str
      * @param start
      * @param end
      * @return String
      */ 
    public static String substr(String str, int start, int end) {  
        return str.substring(start, end);  
     }  
 
    /**
      * 两数相除获取整数结果
      * 
      * @param first
      * @param second
      * @return int
      */ 
    public static int chufa(int first, int second) {  
        return first / second;  
     }  
}

再建一个tld文件放在WEB-INF目录下面对其进行配置:

<?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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 
     version="2.0">  
     <tlib-version>1.0</tlib-version>  
     <short-name>len</short-name>  
     <function>  
         <description>calculate string length</description><!-- 对这个EL方法的描述   -->  
    &