`

jstl和struts2标签截取字符串

    博客分类:
  • JSTL
阅读更多
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方法的描述   -->  
         <name>getLen</name><!-- 调用EL方法的名称 -->  
         <function-class>com.cw.common.UFunction</function-class>  
         <function-signature>  
            int getLen(java.lang.String)  
         </function-signature>  
         <example>${len:getLen(str)}</example><!-- 例如 -->  
     </function>  
 
     <function>  
         <description>substring</description>  
         <name>substr</name>  
         <function-class>com.cw.common.UFunction</function-class>  
         <function-signature>  
             java.lang.String substr(java.lang.String,int,int)  
         </function-signature>  
     </function>  
 
     <function>  
         <description>chufa</description>  
         <name>chufa</name>  
         <function-class>com.cw.common.UFunction</function-class>  
         <function-signature>int chufa(int,int)</function-signature>  
     </function>  
</taglib>

最后进行调用测试:

<%@ page language="java" pageEncoding="gbk"%>  
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="/WEB-INF/mytag.tld" prefix="myTag" %>  
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
   <body>  
     <c:set var="str" value="自定义函数,做一个截取字符串长度的测试"></c:set>  
     字条串"${str}"的长度是${myTag:getLen(str)}<br/>  
     字条串"${str}"截取前5个字符:${myTag:substr(str,0,5)}<br/>  
    5除以3取整数是:${myTag:chufa(5,3) }  
    
   </body>  
</html> 

----------***********************------------------
struts2

首先,你必须用<s:set >将获取的字符串存到一变量里面,
以str属性为例直接获取
<s:set name="str" value="parameters.str[0]"></s:set>

从集合中获取时:
<s:iterator value="集合" >

<s:set name="str" value="str"></s:set>

</s:iterator>

然后就是判断截取

// 当长度超过6时截取前6为显示

<s:if test="%{#str.length()>6}">
    <s:property value="str.substring(0,6)+'...'" />
</s:if>
//否则全部显示
<s:else>
    <s:property value="str" />
</s:else>
2
0
分享到:
评论
2 楼 akilis 2011-11-25  
多谢分享 转走了 
1 楼 jiayj198609 2010-12-06  
可以在有代码的部分加上<code>标签;这样的话;代码就美化了很多哦!

相关推荐

    (TAG标签)jstl和struts2标签截取字符串[文].pdf

    jstl和struts2标签截取字符串 从给定的文件信息中,我们可以看到,jstl和struts2标签都是用于截取字符串的。下面我们将对这两个标签进行详细的介绍和分析。 jstl标签 jstl标签是一种基于Java的标签库,它提供了...

    JSTL、EL、ONGL、Struts标签的区别

    **与 JSTL 的区别**: OGNL 是 Struts2 的一部分,主要用于对象图导航,而 JSTL 是一组标准标签库,用于控制流和数据操作。 #### 四、Struts 标签 **定义**: Struts 标签是 Struts 框架提供的用于简化 JSP 页面开发...

    Struts2知识点小结-非常实用

    本文将对Struts2的核心概念和标签库进行详细讲解,帮助初学者更好地理解和掌握这个框架。 Struts2框架由两个主要部分构成:控制器和视图。控制器部分由Action类及其一系列隐藏的拦截器来实现,主要负责处理用户请求...

    JSP 中限定字符长度

    其中,`&lt;c:if&gt;`用于条件判断,`fn:length()`和`fn:substring()`分别用于获取字符串长度和截取字符串。 - **表达式语言(EL)**:EL是一种简洁的数据访问语言,可以用来获取JavaBean属性的值。在上面的代码中,`${sk....

    struts包 SqlServer JDBC链接包

    在开发过程中,我们经常使用String类的各种方法,如concat、substring、trim等,来进行字符串的拼接、截取和清理等操作。 "Sqlserver"标签明确了这个包与SQL Server数据库的关联,意味着这个压缩包可能包含了与SQL ...

    石家庄天远科技集团有限公司—Java开发笔试题

    题目中还要求编写代码将字符串“3,1,2,4”拆分为数组,并按升序排序,这可以通过`split()`方法和`Arrays.sort()`实现。 【HTML部分】 JavaScript验证输入框内容为整数,可以使用正则表达式或`parseInt()`函数,...

    javase相关知识点

    5. JSP截取字符串:使用c:out配合fmt:formatString进行截取。 【框架知识】 1. Spring AOP:面向切面编程,用于添加日志、事务管理等横切关注点。IoC(控制反转):通过依赖注入管理对象的依赖关系。 2. Spring ...

    freemarker总结

    其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替&gt;会有更好的效果,因为 FreeMarker会把&gt;解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:(x&gt;y)&gt; ...

Global site tag (gtag.js) - Google Analytics