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;
}
}