`
zhouchaofei2010
  • 浏览: 1104067 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2 截字符串长度 去掉字符串空格

阅读更多

Struts2 截字符串长度 去掉字符串空格

截字符串控制文本长度:<s:property value="title.length()>15?title.substring(0,15)+'...':title"/>

去掉字符串空格:<s:property value='title.trim()'/> 这种写法最简单。。

 

截字符串控制文本长度的自定义标签:

 

<%@ taglib uri="/WEB-INF/StringOmit.tld" prefix="my" %>

 

<my:StringOmit maxLength="40" suffix="..."><s:property value="content"/></my:StringOmit>

 

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" 
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
	<tlibversion>1.0</tlibversion>
	<jspversion>1.1</jspversion>
	<shortname>mytag</shortname>
	<tag>
		<name>StringOmit</name>
		<tagclass>com.gwideal.jxwpgsh.util.StringOmitTag</tagclass>
		<bodycontent>jsp</bodycontent>
		<attribute>
			<name>maxLength</name>   
	        <required>true</required>
	        <rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>   
	        <name>suffix</name>   
	        <required>false</required>   
	        <rtexprvalue>true</rtexprvalue>   
	    </attribute>   
	    <attribute>   
	        <name>value</name>   
	        <required>false</required>   
	        <rtexprvalue>true</rtexprvalue>   
	    </attribute>  
	</tag>
</taglib>

 

 

package com.gwideal.jxwpgsh.util;

import java.util.ArrayList;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;

@SuppressWarnings("serial")
public class StringOmitTag extends BodyTagSupport {

	private int maxLength;
	private String value;
	private String suffix;
	public int getMaxLength() {
		return maxLength;
	}
	public void setMaxLength(int maxLength) {
		this.maxLength = maxLength;
	}
	public String getSuffix() {
		return suffix;
	}
	public void setSuffix(String suffix) {
		this.suffix = suffix;
	}
	public String getValue() {
		return value;
	}
	public void setValue(String value) {
		this.value = value;
	}
	
	@Override  
    public int doAfterBody() throws JspException {   
        value=bodyContent.getString(); 
        return SKIP_BODY;   
    }
	
	public int doEndTag ()throws JspException {
		JspWriter out = pageContext.getOut();
		if(null==value){
			value = "";
		}
		try {
			/*old:按照长度截取
			if(value.length()>maxLength){
				value=value.substring(0, maxLength);
				if(suffix!=null || !suffix.equals("")){
					value+=suffix;
				}
			}
			*/
			int vLen = value.getBytes().length;
			if(vLen>maxLength){
				value=getSubString(value, (maxLength));
				if(suffix!=null || !suffix.equals("")){
					value+=suffix;
				}
			}
			out.print(value);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return EVAL_PAGE;  
	}
	
    public static String getSubString(String oriStr, int subStrLen) {
    	String value="";
        if (oriStr==null || subStrLen <= 0) {
           // return new String[0];//返回数组
        	 return new String();
        }
        ArrayList list = new ArrayList();
        byte[] subStrBytes = oriStr.getBytes();
        int subStrIndex = 0;
        int index = 0;
        while (subStrIndex < subStrBytes.length) {
            int len = subStrLen;
            if (subStrIndex + len > subStrBytes.length) {
                len = subStrBytes.length - subStrIndex;
            }
            String subStr = new String(subStrBytes, subStrIndex, len);
            if (subStr.charAt(subStr.length() - 1) != oriStr.charAt(index + subStr.length() - 1)) {
                subStr = subStr.substring(0, subStr.length() - 1);
                len = subStr.getBytes().length;
            }
            if(len <= 0){
                //return new String[0];//返回数组
            	 return new String();
            }
            subStrIndex += len;
            index += subStr.length();
            list.add(subStr);
            value = subStr;
            break;
        }
        //String[] subStrs = (String[]) list.toArray(new String[list.size()]);
        //return subStrs;
        return value;
    }

}

 

 

 

分享到:
评论
1 楼 ifox 2012-05-10  
鸡动。帮了我一个大忙。谢谢大哥咯

相关推荐

    struts-api.rar_struts api_字符 截取

    5. **length()**:返回字符串的长度,常用于截取指定长度的字符串。 6. **StringBuilder** 和 **StringBuffer**:这两个类提供了动态构建和修改字符串的方法,比如 `append()` 和 `deleteCharAt()`,它们在需要多次...

    struts2 trim拦截器 过滤首尾空格

    Struts2 Trim拦截器过滤首尾空格 Struts2框架提供了拦截器机制,可以在Action执行前后执行某些操作,以满足特定的需求。TrimInterceptor就是一个这样的拦截器,它的主要功能是过滤请求数据的首尾空格。 ...

    struts2验证框架参数

    与`required`类似,但增加了对字符串长度的检查。如果字段的值为`null`、空白或长度为零,验证将失败。此验证器还支持`trim`参数,决定在检查长度之前是否去除前后空格。 #### `stringlength` 用于验证字符串长度...

    Struts2 validation.xml 经典验证

    通过以上分析,我们可以看到Struts2框架提供了丰富的验证规则,包括但不限于字符串、数字、日期等类型的验证,这些规则能够帮助开发者确保应用程序接收到的数据是合法且符合预期的,从而提高了应用的安全性和用户...

    struts2自制复习标签

    - `requiredstring`:检查字符串是否为空,可选参数`trim`决定是否去除空格。 - `required`:检查字段是否为空。 - `int`:验证整型字段,可以设置最大值`max`和最小值`min`。 - `date`:验证日期字段,同样支持最大...

    struts2jar包和阿里巴巴开发手册

    手册还特别关注性能优化,比如提倡使用StringBuilder而非String进行字符串拼接,避免在循环中创建不必要的对象,以及使用并发工具类来管理多线程环境中的共享资源。此外,手册对数据库操作、日志记录、单元测试等...

    Struts2和Webwork远程命令执行漏洞分析1

    Struts2和Webwork远程命令执行漏洞主要源于Apache Struts2框架中的一个设计缺陷,该框架使用OGNL(Object-Graph Navigation Language)表达式来处理用户输入,这为恶意攻击者提供了可乘之机。该漏洞发生在Struts2的...

    struts2最全验证框架

    - **length**:字符串长度验证。 通过灵活运用这些验证器,可以构建出更加复杂且准确的验证逻辑,提高Web应用程序的安全性和用户体验。 综上所述,Struts2 的验证框架不仅提供了丰富的内置验证器,还允许开发者...

    struts笔记

    - `requiredstring`:检查字符串是否为空或只有空格 - `int`:检查字段是否为整数 - `double`:检查字段是否为双精度浮点数 - `date`:检查字段是否为日期格式 - `expression`:检查字段是否符合指定的表达式 - `...

    Struts2验证框架的配置及validation.xml常用的验证规则

    2. **requiredstring**:检查字符串字段是否为空或仅由空格组成。 3. **int**:检查字段是否为整数,并可指定最小值和最大值。 4. **double**:检查字段是否为双精度浮点数,并可指定最小值和最大值。 5. **date**:...

    struts2验证框架

    - **required**:验证字段值是否为空(null),注意空字符串并不视为null。 ```xml &lt;message&gt;Please enter a username ``` - **requiredstring**:验证字段值是否为空或空白(empty)。 ```xml ...

    struts2数据校验

    - **必填检查**:使用`requiredstring`类型校验器,参数`trim`设置为`true`表示在检查前会去除字符串两端的空格。 - **正则表达式检查**:使用`regex`类型校验器,表达式`(\W{4,25})`表示用户名必须是4到25个非...

    struts框架验证---输入校验器大全

    2. **RequiredStringValidator**: 类似于`RequiredFieldValidator`,但针对字符串类型,即使字符串中只包含空格也会视为无效。 3. **IntRangeFieldValidator**: 验证整数类型的字段,确保数值在指定的范围内。 4. ...

    Struts2框架验证_validation_常见类型验证模板(包含字段和非字段方式)

    本文将详细解析Struts2框架中的几种常见验证类型及其配置方式,包括必填校验、必填字符串校验、整数校验、日期校验以及表达式校验,并通过具体的XML配置示例来阐述这些验证类型的实现细节。 #### 二、必填校验...

    常用Struts校验器

    其中`&lt;param name="trim"&gt;true&lt;/param&gt;`表示在进行验证之前会先去除字符串两边的空格。如果用户没有填写电话号码或仅填写了空格,则会显示提示信息“电话号码不能为空”。 #### 3. Email校验器 Email校验器用于...

    jQuery struts2 hibernate

    - **空格过滤**:`$.trim()` 可以去除字符串两端的空白字符。 #### 八、Ajax技术 1. **定义**: - **概念**:Ajax (Asynchronous JavaScript and XML),即异步的 JavaScript 和 XML 技术,允许网页在不重新加载的...

    struts2 validation.xml 验证规则代码解析

    -- 验证字符串长度 --&gt; &lt;param name="minLength"&gt;2 &lt;param name="maxLength"&gt;20 用户名长度应在2到18个字符间 &lt;param name="trim"&gt;true 密码不能为空 &lt;param name="minLength"&gt;6 ...

    oracle的数据类型_java中Clob型详细用法_struts中实现图片上传功能

    5. LONG: 用于存储长字符串,最大长度可达 2GB,但不支持字符串搜索,已被 BLOB、CLOB 和 NCLOB 等大对象类型逐渐取代。 6. RAW(n) 和 LONG RAW: 二进制数据类型,RAW 用于存储较小的二进制文件,最大长度为 2000 ...

    如何解决struts2日期类型转换

    在Struts2框架中,数据类型的转换通常由框架自身处理,包括常见的内置类型。然而,对于Date类型,这种自动转换可能会出现不一致的情况,尤其是在不同的环境(如本地开发与测试服务器)之间。这是因为Struts2默认的...

Global site tag (gtag.js) - Google Analytics