通常像标题之类的,如果后台输入过长,那么前台完整输出,必然在格式上造成多行,会显得很难看,当然如果事先对该行进行了长度和高度的控制,加上了一句“overflow:hidden”,那又另当别论了。
截取的方式自然是通过${fn:substring()}函数,那么做法如下:
1 |
< c:if test="${fn:length(article.title)>21"}>${fn:substring(article.title,0,21)}....</ c:if >
|
2 |
< c:if test = "${fn:length(article.title)<=21" }>${article.title}</ c:if >
|
这样写未尝不可,其实有一个更简单的输出方式,用到的方法就是三目运算法,代码如下:
1 |
${fn:length(article.title)>21 ? fn:substring(article.title,0,21) : article.title}${fn:length(article.title)>21 ? '...' : ''} |
代码相比之下,简洁了很多。。
${fn:length()}这个标签很强大,因为它不止可以计算字符串的长度,还可以计算从后台传过来的list对象的长度,一开始还真不知道,下午做项目时就碰到这个问题了,为此卡了一下。
${fn:substring()}这个标签,我觉得他对于中英文字符串的处理不是太好,它将汉字和英文字符都当成是1个字节,在截取的时候,有时候得到的效果往往不是我们想的,为此最好的解决方法是自己写个标签,当然如果后台输出的都是汉字,那么干脆用这个标签来截取,也很方便的。
中英文截取字符串标签的java代码如下,这是我从javaeye上拷贝过来的,在实际的项目中通过。
01 |
package com.test.mytag;
|
03 |
import java.io.IOException;
|
05 |
import javax.servlet.jsp.JspException;
|
06 |
import javax.servlet.jsp.tagext.TagSupport;
|
08 |
import org.apache.log4j.Logger;
|
13 |
* @author ryankay.xiang@gmail.com
|
16 |
public class CutStringTag extends TagSupport {
|
20 |
private static final long serialVersionUID = 1L;
|
23 |
* Logger for this class
|
25 |
private static final Logger logger = Logger.getLogger(CutStringTag. class );
|
32 |
public int doStartTag() throws JspException {
|
37 |
public int doEndTag() throws JspException {
|
38 |
String html = cutString(value, size,mark);
|
40 |
this .pageContext.getOut().write(html.toString());
|
41 |
} catch (IOException e) {
|
42 |
logger.error( "tag CutStringTag error" , e);
|
47 |
public String cutString(String str, int len,String mark) {
|
49 |
StringBuffer sb = new StringBuffer();
|
51 |
for ( int i = 0 ; i < str.length(); i++) {
|
52 |
char c = str.charAt(i);
|
56 |
counter = counter + 2 ;
|
59 |
String result=sb.toString().trim();
|
68 |
public String getValue() {
|
72 |
public void setValue(String value) {
|
76 |
public String getMark() {
|
80 |
public void setMark(String mark) {
|
84 |
public Integer getSize() {
|
88 |
public void setSize(Integer size) {
|
JS的控制如下:
-
function cutstr(str,len)
-
{
-
var str_length = 0;
-
var str_len = 0;
-
str_cut = new String();
-
str_len = str.length;
-
for(var i = 0;i<str_len;i++)
-
{
-
a = str.charAt(i);
-
str_length++;
-
if(escape(a).length > 4)
-
{
-
str_length++;
-
}
-
str_cut = str_cut.concat(a);
-
if(str_length>=len)
-
{
-
str_cut = str_cut.concat("...");
-
return str_cut;
-
}
-
}
-
}
分享到:
相关推荐
(TAG标签)jstl和struts2标签截取字符串[文].pdf
${fn:substring(名称,0,23) }直接截取jstl长度控制字符串长短,
做过大型网站前台的Web开发程序员最头疼的事情就是前台首页的布局,这其中最最头疼的就是标题字符的截取的问题,虽然有fn:substring,但表现率以及对中文的支持均不够完善,其实最终还是归结为客户要求太高了,不过...
${fn:substring(你要截取的字符串),beginIndex,endIndex} 下面是JSTL中自带的方法列表以及其描述 函数名 函数说明 使用举例 fn:contains 判断字符串是否包含另外一个字符串 ${fn:contains(name,> fn:...
jstl 字符串处理函数 fn:length、fn:contains 、 fn:containsIgnoreCase 、 fn:endsWith 、 fn:escapeXml 、 fn:indexOf 、 fn:join 、 fn:replace 、 fn:split 、 fn:startsWith 、 fn:substring 、 fn:...
<c:if> <c:if>的用途就和我们一般在程序中用的if一样。 语法 语法1:没有本体内容(body) <c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/> 语法2:有本体内容 ...
JSP中JSTL提供的函数标签EL表达式操作字符串的方法
JSTL的jar包,源码和API,POM文件
jstl字符串集合类的例子 jstl字符串集合类的例子
在 developerWorks 上其新系列的第一篇文章中,软件工程师 Mark Kolb 向您展示了如何使用 JSTL 标记来避免在 JSP 页面中使用脚本编制元素。您还将了解如何通过从表示层删除源代码来简化软件维护。最后,您将了解 ...
jstl标签库.txtjstl标签库.txt
这个是jstl的连接字符串和jar包,在Java中使用sql server2000的时候,企业中的连接方式一般都是用jstl,虽然sql的jar包也很好用,但是用jstl的人更多,所以共享给大家!
最近用jstl1.0 的时候经常要在页面上对字符串做改动,在网上找了一个写的不错的,借鉴一下
NULL 博文链接:https://showlike.iteye.com/blog/707047
会议管理系统使用EL和JSTL优化jsp页面
jstl jar包: jstl.jar standard.jar 使用jstl做前端开发的jar包。
该资源中包含jstl依赖包。...我们在使用jstl时需要先引入jstl的两个依赖包jstl-1.2.jar与standard.jar,然后在jsp页面的最前面写下引入jstl的语句:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
EXTJS网站后台以及JSP+JSTL+EL网站前台,包含EXTJS图片上传、图片轮播、视频上传及视频播放、百度地图等功能