我使用<display:table>标签展示内容,由于部分字段信息过长,不能全部显示出来,所以需要进行局部省略,为了实现这种效果,我在<display:column>标签中,使用了maxLength属性,省略的效果是出来了,但当显示的字段内容有包含数字或者符号时,就会在显示的前半部分与省略号之间出现乱码.其实所有内容比较长的字段在显示时,都出现了这个问题,现在我就拿"产品主要构成"的显示举例说明,如下图:
jsp代码截图如下:
源码如下:
jsp页面头部信息:
1
|
<%@ page language= "java" contentType= "text/html; charset=UTF-8" pageEncoding= "UTF-8" %> |
1
2
3
4
5
6
7
8
9
10
|
<display:table name= "itemList" id= "prodcopy" requestURI= "list01.ht" sort= "external" cellpadding= "0" cellspacing= "0" export= "true" class= "table-grid" > <display:column title= "序号" style= "width:2% ;text-align:center" >${prodcopy_rowNum}</display:column> <display:column property= "cate" title= "型号" style= "width:4% ;text-align:center;" escapeXml= "true" maxLength= "40" ></display:column> <display:column property= "supply" title= "生产<br/>单位" style= "width:4% ;text-align:center" escapeXml= "true" maxLength= "40" ></display:column> <display:column property= "name" title= "产品<br/>名称" style= "width:4% ;text-align:center" escapeXml= "true" maxLength= "40" ></display:column> <display:column property= "code" title= "产品<br/>图号" style= "width:4% ;text-align:center" escapeXml= "true" maxLength= "4" ></display:column> <display:column property= "no" title= "出厂<br/>编号" style= "width:4% ;text-align:center" escapeXml= "true" maxLength= "4" ></display:column> <display:column property= "outplantat" title= "出厂<br/>时间" style= "width:4% ;text-align:center" escapeXml= "true" maxLength= "40" ></display:column> <display:column property= "num" title= "数量" style= "width:4% ;text-align:center" ></display:column> <display:column property= "consume" title= "配套<br/>单位" style= "width:4% ;text-align:center" escapeXml= "true" maxLength= "40" ></display:column> |
说明:
(1) 因为字段内容比较长,所以不能简单的省略,还要做到在鼠标移动到字段上时,能够显示出全部的内容.如下图:
而<display:column>刚好实现了这个效果,所以我才具体到maxlength属性上.
(2) 另外我也尝试使用maxWords属性,但没有任何效果.
(3) 通过修改maxLength的值,有时也可以临时将显示的乱码问题去掉,但是由于数据库中字段信息内容不是固定样式的比如未省略的部分如果都是规则的,就不会出现乱码,但当未省略部分中有数字或者字符,符号等时,就仍然会出现乱码情况.
我的理解是,一个中文是占用两个长度,如果显示的内容全部都是中文的时候,当maxlength的属性值为一个中文字符长度的整数倍时,就不会出现乱码.但因为内容中可能包含字符,符号,数字等,导致一个固定的maxlength值,不能刚好满足是整数倍的情况,所以出现乱码.
回过来,再重申自己的问题,就是在<display:column>标签中使用maxLength属性时,如何解决在显示的内容与省略号之间出现乱码的问题.
<display:column title="产品主要构成" style="width:4% ;text-align:center" > <div class="content" title="${prodcopy.parts }">${prodcopy.parts }</div> </display:column>
<style> .content{ text-overflow: ellipsis; overflow: hidden; white-space: nowrap; width:100px; } </style>
能够实现鼠标悬浮时,看到全部信息,主要是由title属性完成的。