论坛首页 Java版 Struts

Struts标签库中<bean:write> 截取标题的长度的最佳方法

浏览 3163 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2007-01-23 关键字: struts

【文章经过N次转载,不知道原创作者是谁,为了尊重原创作者,还是不要把转载的注为作者吧,在这里向原创作者致意,感谢!】

在strtus下显示完整标题的一种方法 
我觉得在读数据的时候截取标题的长度有一些不妥当,我刚才试图写了一个很简单的自定义标签,在struts中有这样一个标签上面标签的意思是读取article对象中的title属性的值,现在对title的长度要求限制在一定范围之内,定义此标签的类是org.apache.struts.taglib.bean.WriteTag如果对这个类扩展,加一个属性cut ,再根据cut的大小来截取标题的长度,我对WriteTag继承,重写doStartTag(), 

java 代码
  1. package org.apache.struts.taglib.bean; //注意,要这样写,不然会出错的    
  2. StringTag extends WriteTag{....   
  3. public String setValue(String value) {   
  4.     String tempProperty=value;   
  5.     if(cut>0){   
  6.         if(tempProperty.length()>=(cut+1)){   
  7.             tempProperty=tempProperty.substring(0, cut) +"...";        }   
  8.     }   
  9.     return tempProperty;   
  10. }   
  11. public int doStartTag() throws JspException {    // Look up the requested bean (if necessary)   
  12.     if (ignore) {   
  13.         if (TagUtils.getInstance().lookup(pageContext, name, scope) == null) {   
  14.             return (SKIP_BODY); // Nothing to output   
  15.         }   
  16.     }    // Look up the requested property value   
  17.     Object value = TagUtils.getInstance().lookup(pageContext, name, property, scope);    if (value == null) {   
  18.         return (SKIP_BODY); // Nothing to output   
  19.     }    // Convert value to the String with some formatting   
  20.     String output = formatValue(value);   
  21.     output=setValue(output);  //这句是加的,别的都是原来的   
  22.     // Print this property value to our output writer, suitably filtered   
  23.     if (filter) {   
  24.         TagUtils.getInstance().write(pageContext, TagUtils.getInstance().filter(output));   
  25.     } else {   
  26.         TagUtils.getInstance().write(pageContext, output);   
  27.     }    // Continue processing this page   
  28.     return (SKIP_BODY);}  

对标签重写完毕,然后写一个dtd文件 

xml 代码
  1. <tag>  
  2. <name>writename>  
  3. <tagclass>org.apache.struts.taglib.bean.StringTagtagclass>  
  4. <bodycontent>emptybodycontent>  
  5. <attribute>  
  6. <name>bundlename>  
  7. <required>falserequired>  
  8. <rtexprvalue>truertexprvalue>  
  9. attribute>  
  10. <attribute>  
  11. <name>filtername>  
  12. <required>falserequired>  
  13. <rtexprvalue>truertexprvalue>  
  14. attribute>  
  15. <attribute>  
  16. <name>formatname>  
  17. <required>falserequired>  
  18. <rtexprvalue>truertexprvalue>  
  19. attribute>  
  20. <attribute>  
  21. <name>formatKeyname>  
  22. <required>falserequired>  
  23. <rtexprvalue>truertexprvalue>  
  24. attribute>  
  25. <attribute>  
  26. <name>ignorename>  
  27. <required>falserequired>  
  28. <rtexprvalue>truertexprvalue>  
  29. attribute>  
  30. <attribute>  
  31. <name>localename>  
  32. <required>falserequired>  
  33. <rtexprvalue>truertexprvalue>  
  34. attribute>  
  35. <attribute>  
  36. <name>namename>  
  37. <required>truerequired>  
  38. <rtexprvalue>truertexprvalue>  
  39. attribute>  
  40. <attribute>  
  41. <name>propertyname>  
  42. <required>falserequired>  
  43. <rtexprvalue>truertexprvalue>  
  44. attribute>  
  45. <attribute>  
  46. <name>scopename>  
  47. <required>falserequired>  
  48. <rtexprvalue>truertexprvalue>  
  49. attribute>  
  50. <attribute>  
  51. <name>cutname>  
  52. <required>falserequired>  
  53. <rtexprvalue>truertexprvalue>  
  54. attribute>  
  55. tag>  
写完了之后,我们就可以在jsp页面中调用它了,首先引用定义标签 然后对链接代码进行重写,我写的是下面一段  paramProperty="id" paramId="id" 
title="">

用以上方法当鼠标放到标题上时回显示完整的标题,在页面中显示部分标题 
   
时间:2007-01-23
疑似直接Ctrl+V过来的!!!
   
0 请登录后投票
时间:2007-01-24
你的不是最佳方法。
小题大作,还要专门做一个TAG,真麻烦!
   
0 请登录后投票
时间:2007-01-24
daoger 写道
疑似直接Ctrl+V过来的!!!

Google了一下,很快就有了结果…… (因此我投了隐藏)

http://www.qhang.cn/snipsnap/comments/xiaoyongwang/2006-08-13/1

虽然楼主也并没有说是自己原创的啊……然而这样转载不注明出处的做法确实是很不妥当的。
另外,使用历史人物来作为自己头像的行为我也觉得很是不好!
   
0 请登录后投票
时间:2007-01-24
to daoger:是copy过来的。
to dhj1:它只是一种解决问题的思路,一种学习的方法。
   
0 请登录后投票
时间:2007-01-24
Allen 写道
daoger 写道
疑似直接Ctrl+V过来的!!!

Google了一下,很快就有了结果…… (因此我投了隐藏)

http://www.qhang.cn/snipsnap/comments/xiaoyongwang/2006-08-13/1

虽然楼主也并没有说是自己原创的啊……然而这样转载不注明出处的做法确实是很不妥当的。
另外,使用历史人物来作为自己头像的行为我也觉得很是不好!


我这篇文章是经过N次转载的,发帖子的时候也没有明确规定是否要注明转载。
这位仁兄投隐藏是你的权利,但是你不像个男人,做事不敢当,干吗把颜色调成白色?似乎有什么见不得人的东西???
另外,用什么做头像是我的权利,只要没违反《中华人民共和国宪法》和javaeye的规定,好像你用动物的头像,并不是说你就是退化了吧?呵呵。
   
0 请登录后投票
时间:2007-01-24
我只谈论技术,这不是最优的方法。
在普通开发中,一般不要去自已定义TAG,根本没有必要。决问题的思路也不是要把简单的东西搞复杂,在POJO中搞个属性,切了长度放在里面,直接了当,可读性又好。干嘛去做TAG。
   
0 请登录后投票
时间:2007-01-24
是,你的是最佳方法!
   
0 请登录后投票
时间:2007-07-27
更正一下,上面给出的链接失效
   
0 请登录后投票
时间:2007-08-22
dhj1 写道
我只谈论技术,这不是最优的方法。
在普通开发中,一般不要去自已定义TAG,根本没有必要。决问题的思路也不是要把简单的东西搞复杂,在POJO中搞个属性,切了长度放在里面,直接了当,可读性又好。干嘛去做TAG。

那这样不是很多的POJO都要有多余的属性.这个我觉得还不如用标签,这样还可以实现filter等功能.
   
0 请登录后投票
论坛首页 Java版 Struts

跳转论坛:
JavaEye推荐