标签中使用maxLength属性后,显示的内容与省略号之间出现乱码

javaee_sunny 2016-12-06 09:30:36
我使用<display:table>标签展示内容,由于部分字段信息过长,不能全部显示出来,所以需要进行局部省略,为了实现这种效果,我在<display:column>标签中,使用了maxLength属性,省略的效果是出来了,但当显示的字段内容有包含数字或者符号时,就会在显示的前半部分与省略号之间出现乱码.其实所有内容比较长的字段在显示时,都出现了这个问题,现在我就拿"产品主要构成"的显示举例说明,如下图:

jsp代码截图如下:

源码如下:
jsp页面头部信息:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>


<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属性时,如何解决在显示的内容与省略号之间出现乱码的问题.
...全文
547 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yadg 2017-05-19
  • 打赏
  • 举报
回复
最近刚开好用到这个组件,你把escapeXml=true去掉试试。猜测是这个会将你的文字转成 xml,比如 引号会变成 ",这样再算长度,你的就是乱码了

61,115

社区成员

发帖
与我相关
我的任务
社区描述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
社区管理员
  • HTML(CSS)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧