我在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("&lt;"); break;
        case '>': filtered.append("&gt;"); break;
        case '"': filtered.append("&quot;"); break;
        case '&': filtered.append("&amp;"); break;
        case '\r': filtered.append("\n"); break;
        case ' ': filtered.append("&nbsp;"); break;
        case '\t': filtered.append("    "); break;
        default: filtered.append(c);
      }
    }
    return(filtered.toString());
  }//将特殊字符转化为html格式
但是在用logic标签叠代输出后,(filter属性是设为false )却是原原本本显示转化后的内容比如:&nbsp;&nbsp;开心开心...
怎么&nbsp;不会转化为空格呢?不知道为什么?急死我了

解决方案 »

  1.   

    别的字符可以转化成功吗,还是只有空格不行?
    case ''还是case' '???
      

  2.   

    你的这几个地方有问题:
    case '"': filtered.append("&quot;"); break;
    应该是
    case '\"': filtered.append("&quot;"); break;
    case '\r': filtered.append("\n"); break;
    应该是
    case '\r': filtered.append(""); break;
      

  3.   

    case ' ': filtered.append("&nbsp;"); break;
    这句应该没问题。
    你跟踪一下吧。设这句为断点,看得到什么值。
      

  4.   

    不仅&nbsp不会转换为空格,其他特殊字符也不会转换过来,还是原原本本的输出,大家有没碰到过这种情况呢?
      

  5.   

    是输出的问题.把<bean:write>的filter设为true
      

  6.   

    看看客户端生成的HTML代码就知道哪里的问题了撒~
      

  7.   

    我是用SQL SERVER的,将特殊的字符转换后还是原原本本输出(比如原原本本地输出“&nbsp”等),试过很多方法还是不行,怎么就不能转化成空格呢?不仅我,也有一些网友也碰过这种问题
      

  8.   

    唉,按照你的写法我实在是找不出毛病了。给你个文章,里面有类似这样的问题解决。
    http://blog.csdn.net/shan_wei/archive/2006/01/08/573323.aspx
      

  9.   

    太谢谢了,
        我的意思是:当用户在写留言之类的过程中,会输入空格或者回车键,我已经写好一个函数实现将用户输入的这些‘空格’或者‘回车键’转化成‘&nbsp;’和‘<br>’这种html code并已经存入数据库了,但是当用struts标签从数据库取出这些内容(‘&nbsp;’和‘<br>’)并显示出来的时候,是原原本本的输出‘&nbsp;’和‘<br>’这些,而不会转化成空格或回车的效果,filter的属性(true or false)都试过了就不行