我在ActionForm里面写了一个转换html的代码,方法如下,
//判断是否为整型并转化为整型
public boolean hasSpecialChars(String input) {
boolean flag = false;
if ((input != null) && (input.length() > 0)) {
char c;
for(int i=0; i<input.length(); i++) {
c = input.charAt(i);
switch(c) {
case '<': flag = true; break;
case '>': flag = true; break;
case '"': flag = true; break;
case '&': flag = true; break;
case '\r': flag = true; break;
case ' ': flag = true; break;
case '\t': flag = true; break;
}
}
}
return(flag);
}//判断字符串里是否存在特殊字符
/**
* 将字符串格式化成 HTML 代码输出
* 除普通特殊字符外,还对空格、制表符和换行进行转换,
* 以将内容格式化输出,
* 适合于 HTML 中的显示输出
*
*
* @return 格式化后的字符串
*/
public String parseHTML(String input) {
if (!hasSpecialChars(input)) {
return(input);
}
StringBuffer filtered = new StringBuffer(input.length());
char c;
for(int i=0; i<input.length(); i++) {
c = input.charAt(i);
switch(c) {
case '<': filtered.append("<"); break;
case '>': filtered.append(">"); break;
case '"': filtered.append("""); break;
case '&': filtered.append("&"); break;
case '\r': filtered.append("\n"); break;
case ' ': filtered.append(" "); break;
case '\t': filtered.append(" "); break;
default: filtered.append(c);
}
}
return(filtered.toString());
}//将特殊字符转化为html格式
但是在用logic标签叠代输出后,(filter属性是设为false )却是原原本本显示转化后的内容比如: 开心开心...
怎么 不会转化为空格呢?不知道为什么?急死我了
//判断是否为整型并转化为整型
public boolean hasSpecialChars(String input) {
boolean flag = false;
if ((input != null) && (input.length() > 0)) {
char c;
for(int i=0; i<input.length(); i++) {
c = input.charAt(i);
switch(c) {
case '<': flag = true; break;
case '>': flag = true; break;
case '"': flag = true; break;
case '&': flag = true; break;
case '\r': flag = true; break;
case ' ': flag = true; break;
case '\t': flag = true; break;
}
}
}
return(flag);
}//判断字符串里是否存在特殊字符
/**
* 将字符串格式化成 HTML 代码输出
* 除普通特殊字符外,还对空格、制表符和换行进行转换,
* 以将内容格式化输出,
* 适合于 HTML 中的显示输出
*
*
* @return 格式化后的字符串
*/
public String parseHTML(String input) {
if (!hasSpecialChars(input)) {
return(input);
}
StringBuffer filtered = new StringBuffer(input.length());
char c;
for(int i=0; i<input.length(); i++) {
c = input.charAt(i);
switch(c) {
case '<': filtered.append("<"); break;
case '>': filtered.append(">"); break;
case '"': filtered.append("""); break;
case '&': filtered.append("&"); break;
case '\r': filtered.append("\n"); break;
case ' ': filtered.append(" "); break;
case '\t': filtered.append(" "); break;
default: filtered.append(c);
}
}
return(filtered.toString());
}//将特殊字符转化为html格式
但是在用logic标签叠代输出后,(filter属性是设为false )却是原原本本显示转化后的内容比如: 开心开心...
怎么 不会转化为空格呢?不知道为什么?急死我了
case ''还是case' '???
case '"': filtered.append("""); break;
应该是
case '\"': filtered.append("""); break;
case '\r': filtered.append("\n"); break;
应该是
case '\r': filtered.append(""); break;
这句应该没问题。
你跟踪一下吧。设这句为断点,看得到什么值。
http://blog.csdn.net/shan_wei/archive/2006/01/08/573323.aspx
我的意思是:当用户在写留言之类的过程中,会输入空格或者回车键,我已经写好一个函数实现将用户输入的这些‘空格’或者‘回车键’转化成‘ ’和‘<br>’这种html code并已经存入数据库了,但是当用struts标签从数据库取出这些内容(‘ ’和‘<br>’)并显示出来的时候,是原原本本的输出‘ ’和‘<br>’这些,而不会转化成空格或回车的效果,filter的属性(true or false)都试过了就不行