CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  框架、开源

有人发现过struts中有这样的错误吗?

楼主steveyue(约翰岳)2004-12-03 14:49:40 在 Java / 框架、开源 提问

在使用struts1.0或1.1,连接oracle数据库,比如我在news表中有一个字段叫content,现在我在content中输入一篇文章,这篇文章是正常的格式,有标题(显示在文章的第一行,并且在中间位置),正文,正文的每个段落第一行都空两格。  
  我先查看插入到数据库中的值是否正常,发现一切正常。现在当我用诸如  
  <logic:iterate   id="info"   name="newsinfo">  
  <bean:write   name="info"   property="content"/>  
  </logic:iterate>  
  查出来显示在网页中时,却是全都挤在一起,没有分段,没有空格。  
  当用System.out.println(content);打字出来时,就是一切正常。  
  有人发现过这样的错误吗? 问题点数:0、回复次数:12Top

1 楼xinlcao(老猫在线)回复于 2004-12-03 15:41:37 得分 0

这个不是struts的问题,是html的问题,content的内容如果想保持格式不变,应该将所有半角空格转化成全角空格,把\n转换成<br>,然后再存入数据库。Top

2 楼chubbchubb(长街)回复于 2004-12-03 15:51:25 得分 0

首先,你的content里面的空格,回行字符都要换成HTML的&nbsp;和<BR>  
  但是又不能用<bean:write   name="info"   property="content"/>这样的形式,因为你会看到回车全都变成了<BR>,这个本来应该是由浏览器当作HTML代码解释的。  
  这时候,你可以看一下你的网页的source   code   ,你所看到的<BR>都变成了“&lt;BR&gt;”  
  这是因为bean:write这个taglib会把HTML的保留字符全都给你编码的。  
   
  解决办法,不要用bean:write。直接<%out.print(content)%>吧,虽然不好看。  
  Top

3 楼chubbchubb(长街)回复于 2004-12-03 16:06:08 得分 0

不好意思,说错话了。真是没有调查就没有法发言权阿。  
  我看了一下Struts1.2的source,这个编码是是可以控制的,你可以不让他给你过滤。  
  有个属性叫“filter”  
  <bean:write   filter="flase"   name="info"   property="content"/>  
  这个在Struts1.1上也是可以用的,1.0.2我就不知道了  
  应该就没有问题了,试试吧。Top

4 楼chubbchubb(长街)回复于 2004-12-03 16:07:34 得分 0

应该是  
  <bean:write   filter="false"   name="info"   property="content"/>  
  false拼错了,不好意思。  
   
  Top

5 楼steveyue(约翰岳)回复于 2004-12-03 16:07:49 得分 0

回   xinlcao(老猫在线),你所说的我当然全都试了,struts中就是没有解决掉这个问题,把\n转换成<br>,它会在网页上把<br>全部显示出来,而不是我们期望的效果,便成分行。  
   
  回chubbchubb(长街),看来你也遇到过这样的问题,没错,如果要是用<bean:write   name="info"   property="content"/>这样的形式,回车全都变成了<BR>显示在网页上了,查看源码,<BR>也全都变成了“&lt;BR&gt;”,这正是我说的struts的bug,而你所说“不要用bean:write。直接<%out.print(content)%>”也没错,改用<%out.print(content)%>,确实解决问题,但这并不妥,因为,如果这样改的话,诸如:  
  <logic:iterate   id="info"   name="newsinfo">  
  <bean:write   name="info"   property="content"/>  
  </logic:iterate>  
  这类的标签也就一点意义没有了,也就谈不上struts的优越性了,你说是吧?  
  Top

6 楼steveyue(约翰岳)回复于 2004-12-03 16:08:58 得分 0

回   xinlcao(老猫在线),你所说的我当然全都试了,struts中就是没有解决掉这个问题,把\n转换成<br>,它会在网页上把<br>全部显示出来,而不是我们期望的效果,便成分行。  
   
  回chubbchubb(长街),看来你也遇到过这样的问题,没错,如果要是用<bean:write   name="info"   property="content"/>这样的形式,回车全都变成了<BR>显示在网页上了,查看源码,<BR>也全都变成了“&lt;BR&gt;”,这正是我说的struts的bug,而你所说“不要用bean:write。直接<%out.print(content)%>”也没错,改用<%out.print(content)%>,确实解决问题,但这并不妥,因为,如果这样改的话,诸如:  
  <logic:iterate   id="info"   name="newsinfo">  
  <bean:write   name="info"   property="content"/>  
  </logic:iterate>  
  这类的标签也就一点意义没有了,也就谈不上struts的优越性了,你说是吧?  
  Top

7 楼steveyue(约翰岳)回复于 2004-12-03 16:18:59 得分 0

回chubbchubb(长街),好好,分段问题解决,但还是要把"\n"转化成<br>,第一行还是顶格啊,没有空格啊?Top

8 楼chubbchubb(长街)回复于 2004-12-06 11:23:13 得分 0

第一行没有空格?是不是哪里用了trim()?  
  还有,别的地方的空格没有问题?Top

9 楼steveyue(约翰岳)回复于 2004-12-11 12:01:20 得分 0

是的,别的地方没有任何问题,也没用trim()Top

10 楼chubbchubb(长街)回复于 2004-12-16 09:07:54 得分 0

不太清楚了  
   
  你确认两个  
  1:看看生成的HTML代码,首行的前面有没有&nbsp;  
  如果有,那就是HTML显示控制的问题  
   
  2:从DB取出来的时候,前面的空格有没有?Top

11 楼fmzbj(mz)回复于 2004-12-16 09:52:43 得分 0

这不是Struts是的问题,你把CLOB字段的值转达成String类型,设置成属性,在页面上直接用     String   变量=request.getAttribute("").toString();  
  之后用:<%=变量%>  
   
  或直接用<bean:write   name=""   property=""/>输出不行。  
   
  这里的关键是要注意将CLOB   字段转成String   类型  
  Top

12 楼fmzbj(mz)回复于 2004-12-16 09:53:22 得分 0

打错了  
  或直接用<bean:write   name=""   property=""/>输出也行。  
  Top

相关问题

  • struts 404错误
  • struts错误
  • 求助struts错误。。。
  • struts 错误(急,在线等)
  • 问一个struts的错误
  • 求助:Struts错误提示
  • 再次发现错误:-(
  • Struts错误如何解决呢?
  • 帮看看struts的错误信息!
  • struts中捕捉错误的问题

关键词

  • struts
  • 网页
  • 字段
  • 解决
  • 数据库
  • 转换
  • html
  • 空格
  • chubbchubb
  • 长街

得分解答快速导航

  • 帖主:steveyue

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo