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;
}
}
分享到:
相关推荐
5. **length()**:返回字符串的长度,常用于截取指定长度的字符串。 6. **StringBuilder** 和 **StringBuffer**:这两个类提供了动态构建和修改字符串的方法,比如 `append()` 和 `deleteCharAt()`,它们在需要多次...
Struts2 Trim拦截器过滤首尾空格 Struts2框架提供了拦截器机制,可以在Action执行前后执行某些操作,以满足特定的需求。TrimInterceptor就是一个这样的拦截器,它的主要功能是过滤请求数据的首尾空格。 ...
与`required`类似,但增加了对字符串长度的检查。如果字段的值为`null`、空白或长度为零,验证将失败。此验证器还支持`trim`参数,决定在检查长度之前是否去除前后空格。 #### `stringlength` 用于验证字符串长度...
通过以上分析,我们可以看到Struts2框架提供了丰富的验证规则,包括但不限于字符串、数字、日期等类型的验证,这些规则能够帮助开发者确保应用程序接收到的数据是合法且符合预期的,从而提高了应用的安全性和用户...
- `requiredstring`:检查字符串是否为空,可选参数`trim`决定是否去除空格。 - `required`:检查字段是否为空。 - `int`:验证整型字段,可以设置最大值`max`和最小值`min`。 - `date`:验证日期字段,同样支持最大...
手册还特别关注性能优化,比如提倡使用StringBuilder而非String进行字符串拼接,避免在循环中创建不必要的对象,以及使用并发工具类来管理多线程环境中的共享资源。此外,手册对数据库操作、日志记录、单元测试等...
Struts2和Webwork远程命令执行漏洞主要源于Apache Struts2框架中的一个设计缺陷,该框架使用OGNL(Object-Graph Navigation Language)表达式来处理用户输入,这为恶意攻击者提供了可乘之机。该漏洞发生在Struts2的...
- **length**:字符串长度验证。 通过灵活运用这些验证器,可以构建出更加复杂且准确的验证逻辑,提高Web应用程序的安全性和用户体验。 综上所述,Struts2 的验证框架不仅提供了丰富的内置验证器,还允许开发者...
- `requiredstring`:检查字符串是否为空或只有空格 - `int`:检查字段是否为整数 - `double`:检查字段是否为双精度浮点数 - `date`:检查字段是否为日期格式 - `expression`:检查字段是否符合指定的表达式 - `...
2. **requiredstring**:检查字符串字段是否为空或仅由空格组成。 3. **int**:检查字段是否为整数,并可指定最小值和最大值。 4. **double**:检查字段是否为双精度浮点数,并可指定最小值和最大值。 5. **date**:...
- **required**:验证字段值是否为空(null),注意空字符串并不视为null。 ```xml <message>Please enter a username ``` - **requiredstring**:验证字段值是否为空或空白(empty)。 ```xml ...
- **必填检查**:使用`requiredstring`类型校验器,参数`trim`设置为`true`表示在检查前会去除字符串两端的空格。 - **正则表达式检查**:使用`regex`类型校验器,表达式`(\W{4,25})`表示用户名必须是4到25个非...
2. **RequiredStringValidator**: 类似于`RequiredFieldValidator`,但针对字符串类型,即使字符串中只包含空格也会视为无效。 3. **IntRangeFieldValidator**: 验证整数类型的字段,确保数值在指定的范围内。 4. ...
本文将详细解析Struts2框架中的几种常见验证类型及其配置方式,包括必填校验、必填字符串校验、整数校验、日期校验以及表达式校验,并通过具体的XML配置示例来阐述这些验证类型的实现细节。 #### 二、必填校验...
其中`<param name="trim">true</param>`表示在进行验证之前会先去除字符串两边的空格。如果用户没有填写电话号码或仅填写了空格,则会显示提示信息“电话号码不能为空”。 #### 3. Email校验器 Email校验器用于...
- **空格过滤**:`$.trim()` 可以去除字符串两端的空白字符。 #### 八、Ajax技术 1. **定义**: - **概念**:Ajax (Asynchronous JavaScript and XML),即异步的 JavaScript 和 XML 技术,允许网页在不重新加载的...
-- 验证字符串长度 --> <param name="minLength">2 <param name="maxLength">20 用户名长度应在2到18个字符间 <param name="trim">true 密码不能为空 <param name="minLength">6 ...
5. LONG: 用于存储长字符串,最大长度可达 2GB,但不支持字符串搜索,已被 BLOB、CLOB 和 NCLOB 等大对象类型逐渐取代。 6. RAW(n) 和 LONG RAW: 二进制数据类型,RAW 用于存储较小的二进制文件,最大长度为 2000 ...
在Struts2框架中,数据类型的转换通常由框架自身处理,包括常见的内置类型。然而,对于Date类型,这种自动转换可能会出现不一致的情况,尤其是在不同的环境(如本地开发与测试服务器)之间。这是因为Struts2默认的...