Struts中bean:write标签丢失半角空格的处理方法
来源:互联网 发布:同花顺股票开户软件 编辑:程序博客网 时间:2024/05/18 00:23
这两天在测试的过程中发现。
jsp画面中一览区域的数据总是丢失前后的半角空格。
于是进行了调查。
发现Struts标签底层代码根本就没有对空格进行处理。
源代码如下:
This useful method states:
public static String filter(String value) {
if (value == null)
return (null);
char content[] = new char[value.length()];
value.getChars(0, value.length(), content, 0);
StringBuffer result = new StringBuffer(content.length + 50);
for (int i = 0; i < content.length; i++) {
switch (content[i]) {
case '<':
result.append("<");
break;
case '>':
result.append(">");
break;
case '&':
result.append("&");
break;
case '"':
result.append(""");
break;
default:
result.append(content[i]);
}
}
return (result.toString());
}
于是,我想到了重新封装一下bean:write标签。
jsp代码(没变):
<bean:write name="vatMaster" property="mc0_vat_cd"/>
...WEB-INF/tlds/struts/struts-bean.tld文件修改如下:
<tag>
<name>write</name>
<tagclass>jp.co.....frame.web.ui.tag.UserWriteTag</tagclass>
.
.
.
</tag>
蓝色部分为修改后的代码(具体路径省略)。
也就是从新写的一个类,继承了WriteTag类。
UserWriteTag代码如下:
package jp.co.gminds.frame.web.ui.tag;
import javax.servlet.jsp.JspException;
import org.apache.struts.taglib.TagUtils;
import org.apache.struts.taglib.bean.WriteTag;
public class UserWriteTag extends WriteTag {
private static final long serialVersionUID = 1L;
public int doStartTag() throws JspException { // Look up the requested bean (if necessary)
if (ignore) {
if (TagUtils.getInstance().lookup(pageContext, name, scope) == null) {
return (SKIP_BODY); // Nothing to output
}
} // Look up the requested property value
Object value = TagUtils.getInstance().lookup(pageContext, name, property, scope);
if (value == null) {
return (SKIP_BODY); // Nothing to output
} // Convert value to the String with some formatting
String output = formatValue(value);
// Print this property value to our output writer, suitably filtered
if (filter) {
output = TagUtils.getInstance().filter(output);
output = toHtmlString(output, true); //这句是加的,别的都是原来的
TagUtils.getInstance().write(pageContext, output);
} else {
TagUtils.getInstance().write(pageContext, output);
} // Continue processing this page
return (SKIP_BODY);
}
/**
* 文字列に含まれるHTML特殊文字をエスケープ変換するメソッド。
*
* @param p String
* @param b boolean
* @return 変換後文字列
*/
public static String toHtmlString(String p, boolean b) {
if (p == null) {
return "";
}
StringBuffer sf = new StringBuffer();
for (int i = 0; i < p.length(); i++) {
char temp = p.charAt(i);
if (b) {
switch (temp) {
case ' ':
sf.append(" ");
break;
default:
sf.append(temp);
}
}
}
return sf.toString();
}
}
上述方法toHtmlString中。
只是对空格进行了转换。
如果还有别的处理,往里追加即可。
- Struts中bean:write标签丢失半角空格的处理方法
- struts中bean:write标签问题
- struts标签bean:write的用法
- Struts 的标签库 Struts bean write 输出 格式化 标签
- Struts标签 bean:write用法
- Struts标签 bean:write用法
- Struts中,bean write的属性
- 使用struts中bean:write标签格式化输出
- struts的标签库之bean:write用法
- struts中bean:write处理html标记问题
- Struts bean:write标签传值
- Struts bean:write 标签格式化输出
- struts标签库:bean:write 界面
- struts标签库:bean:write Action
- struts标签库:bean:write web.xml
- struts标签之bean:write用法
- struts标签之bean:write用法
- struts标签之bean:write用法
- ASP循环导入导出数据处理 不使用缓存
- java连接sql2005几种方式
- 别把公众当成验钞机 百元假钞猖獗,银行必须问责
- CSS属性大全
- dockpanel suite, 知道如何用了
- Struts中bean:write标签丢失半角空格的处理方法
- asp之自动闭合HTML/ubb标签函数+简单注释
- 删除web Log
- PHP编码规范(PHPCMS开发文档,PHP学习者从此开始)
- SQL Server 2005 Compact Edition移动开发指南
- 关于编译错误--提领指向不完全类型的指针
- 体验 Microsoft Visual Studio 2008 之 AJAX 应用
- 一些有用的系统存储过程及用法
- Asp.net中Global.asax 的使用和事件