`

自定义标签控制过长字符串的显示

阅读更多

问题描述:
关于自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺让人头疼。
我们可以通过CSS控制自动换行,但效果并不是很好,查了一些资料也没有找的好的现成的控件,于是我编写了一个自定义标签解决这个问题,可能其中还存在一些问题,也不是很完善,我会虚心听从指教。
关于自定义标签的理论可参看:JSP2的自定义标签这片贴子(引用的)。

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;

public class TagTextLimit extends BodyTagSupport{
    private int total = 0;
	
	private int numOfRow = 0;
	
	public int doEndTag()throws JspException{
		try{
			if(bodyContent!=null){
				String str = bodyContent.getString();
				String result = "";
				if( numOfRow!= 0){
					String[] temp = str.split(" ");
					
					for(int i = 0;i<temp.length;i++){
						if(temp[i].length() > numOfRow){
								String str1 = temp[i].substring(0,numOfRow-1)+"-";
								String str2 = temp[i].substring(numOfRow-1);
								
								while(str2.length()>numOfRow-1){
									str1 += str2.substring(0,numOfRow-1)+"-";
									str2 = str2.substring(numOfRow-1);
								}
								
								temp[i] = str1.concat(str2);						
						}
						result += temp[i]+" "; 						
					}
					str = result;
				}
				
				
				if(total!=0){
					result = str.substring(0, total)+"...";
				}else{
     					result = str;
    				}
				
				if(numOfRow == 0 && total == 0){
					bodyContent.writeOut(bodyContent.getEnclosingWriter());
				}else{
					pageContext.getOut().write(result);
				}
				
			}
		}catch(java.io.IOException ex){
			throw new JspTagException("IOError:"+ex.getMessage());
		}
		return EVAL_PAGE;
	}
	
	public int doStartTag() throws JspException {
		return EVAL_BODY_TAG;
	}

	public int doAfterBody() throws JspException {
		return SKIP_BODY;
	}

	public void doInitBody() throws JspException {
		super.doInitBody();
	}
	
	public void setBodyContent(BodyContent content) {
		this.bodyContent = content;
	}
	
	public int getNumOfRow() {
		return numOfRow;
	}

	public void setNumOfRow(int numOfRow) {
		this.numOfRow = numOfRow;
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}
}

 

 

分享到:
评论

相关推荐

    虚拟仪器第五次作业 字符串数组的连接,截取,插入,显示

    4. **字符串显示**:显示字符串在LabVIEW中通常是通过“显示”函数或者“图元”(如标签)来完成的。对于数组,可以使用数组循环和“显示”函数,逐个显示数组元素。或者,如果要一次性显示整个数组,可以使用“格式...

    java 字符串指定长度

    例如,如果字符串太长则截断,太短则填充。 - Java 8引入了`StringJoiner`类,可以在两端添加分隔符和前缀后缀,从而间接实现字符串的填充或截断。 5. **使用正则表达式**: - 正则表达式可以用于匹配和替换字符...

    字符串格式化需求规格说明书

    3. **对齐和填充**:了解如何控制字符串的宽度,用空格或其他字符填充,以保持输出的一致性。这对于创建整齐的报表或表格很有用。 4. **精度控制**:在处理数字时,可能需要指定小数位数或整数位数。例如,在显示...

    自定义分页标签自定义分页标签

    自定义分页标签是指开发者根据项目需求,为应用程序创建的特定分页组件,以便更好地控制和美化页面的分页显示。本篇文章将深入探讨自定义分页标签的相关知识点。 首先,我们要理解什么是分页。分页是将大量数据分割...

    jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法

    当EL表达式被错误地当作字符串处理而不是被解析时,会导致其原本要展示的数据无法正确显示。这个问题在使用Java EE 5及以上版本时比较常见。 要解决这个问题,首先需要理解EL表达式的解析与web.xml配置文件中指定的...

    文本框指定字符串长度

    标题“文本框指定字符串长度”和描述“ios限制uitextfield字符长度”所指的就是如何在iOS中设置`UITextField`的字符限制。 首先,我们可以使用`UITextField`的代理方法来实现这一功能。`UITextField`遵循`...

    JavaWeb-12:自定义标签库开发&JSTL标签库

    4. **XML标签**:处理XML文档,如`&lt;c:out&gt;`显示XML内容,`&lt;x:parse&gt;`解析XML字符串。 5. **SQL标签**:执行数据库查询,如`&lt;sql:update&gt;`、`&lt;sql:query&gt;`和`&lt;sql:resultSet&gt;`。 使用JSTL的好处在于,它将Java代码...

    自己开发的一个生成多级select的自定义标签

    2. **HTML模板**:定义了自定义标签结构的HTML模板文件,可能是独立的文件或嵌入在源代码中的字符串。 3. **CSS样式**:为了美观和交互性,可能会有CSS文件来控制多级SELECT的显示样式。 4. **示例或测试文件**:...

    LabView图形化编程语言之拆分中文字符串.zip

    拆分字符串涉及到将一个长字符串分解成若干个子字符串,这在处理数据、解析文本或读取文件时非常有用。 1. **字符串拆分方法**: - 使用“字符串分割”函数:LabView提供了“字符串分割”函数,可以根据特定的分隔...

    分解字符串(3KB)

    1. **控件**:这可能指的是用户界面(UI)中使用的控件,如文本框(TextBox)用于输入字符串,或者列表框(ListBox)或数据网格(DataGridView)用于显示分解后的结果。控件是Windows应用程序中交互元素,用户可以...

    swift-Sprinter是在iOS和MacOS上用于格式化字符串的库

    Sprinter的出现,填补了这一空白,它允许开发者使用类似于`%d`、`%s`这样的格式令牌来控制字符串中不同类型的变量如何插入。 Sprinter库的核心概念是格式化字符串模板,这些模板包含静态文本和格式化令牌。格式化...

    Struts+Hibernate+自定义标签的网上书店

    在这个系统中,可能使用了图像验证码,要求用户输入图片中显示的一串随机字符,只有输入正确才能完成登录,从而增强了系统的安全性。 **5. 过滤器(Filter)** 在Web应用程序中,过滤器用于在请求到达目标资源之前...

    C#2017实现自定义属性实现标签特性简单例子可执行

    在上面的例子中,`MyCustomAttribute`类接受一个字符串参数`description`,并可以通过`AllowMultiple = true`设置允许在同一个目标上多次应用该属性。 接下来,我们可以在代码中应用这个自定义属性,比如在WPF的...

    iOS属性字符串封装库

    4. **自定义标签系统**:可以方便地创建自定义标签,用于显示带有特定样式的文本,比如高亮关键词或突出显示价格。 5. **HTML解析**:将HTML内容转换为NSAttributedString,方便从网络获取的HTML文本在iOS应用中展示...

    jsp页面字符串截取,点击弹出弹出层

    结合标签"源码",可能意味着这篇博文详细解释了如何使用源代码实现这些功能,包括自定义的字符串截取函数、点击事件处理和Base64编码解码。"工具"标签则可能暗示了博主分享了一些实用的工具或者技巧,帮助读者更有效...

    Ruby-ActsAsTaggableOnRails应用程序标签插件允许自定义标签在动态环境中

    Ruby-ActsAsTaggableOn 是一个非常流行的Rails插件,用于在动态环境中实现自定义标签功能。这个插件使得在你的Rails应用中添加标签系统变得简单高效,它提供了灵活的接口来管理和操作标签数据。 首先,让我们深入...

    3 MATLAB数据显示格式、逻辑值、数值和逻辑值转换、字符字符串和函数句柄.zip

    这个压缩包文件包含了关于MATLAB的几个核心概念,如数据显示格式、逻辑值处理、数值与逻辑值的转换、字符字符串的操作以及函数句柄的使用。下面将逐一详细介绍这些知识点。 1. **数据显示格式**: 在MATLAB中,...

    php字符串过滤与替换小结

    nl2br()函数可以将字符串中的换行符(\n)转换为HTML的 标签,常用于文本显示。相对应地,br2nl()函数则将 标签转换为换行符。 2. 使用preg_replace()函数进行复杂的模式匹配和替换操作。例如,merge_spaces...

    基于 TextMeshPro 的自定义富文本标签插件 Custom Rich Text Tag Plugin

    接着,开发者可以在文本字符串中插入自定义标签,并编写对应的处理代码。此外,对于"说明.txt"文件,通常会包含插件的安装指南、使用示例和注意事项,开发者应仔细阅读以确保正确使用。 6. **优化与性能** 自定义...

    自定义标签

    在导航项中,如果某些名称过长,可以通过截取字符串的方式来显示更简洁的名称,同时保持完整的名称作为提示信息。 ```php foreach ($nav_list as $key =&gt; $val): $alltext = $val['name']; $val['name'] = utf8_...

Global site tag (gtag.js) - Google Analytics