Atea - Hero's Grave

面向对象,开源,框架,敏捷,云计算,NoSQL,商业智能,编程思想。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  40 随笔 :: 0 文章 :: 28 评论 :: 0 Trackbacks
笔者近期正在使用Struts2开发,在这里把个人心得小结一下。

1.重复提交问题。
使用<s:token />标签。但这并不足够。当一个submit需要花费大量时间的时候(例如CRUD),页面会暂时无法转向,这时如果狂点按钮的话仍然可以进行重复提交。
所以正确的作法应该是前后台都要有所控制:
 • 使用<s:token />
 • 使用js控制:<form onsubmit="this.submit.disabled='true';">

2.在web page中使用for循环的问题。
<s:bean name="org.apache.struts2.util.Counter">           
  <s:param name="last" value="***" />
  <s:iterator>
    do sth..
 
</s:iterator>
</s:bean>                           
这是一个很好用的bean,但要注意的是参数last一定要传对。如果设错了的话(比如空值),等待你的将是一个死循环..
PS:其实,在视图层应尽量避免使用循环等复杂逻辑,最好在后台封装好了拿上来直接显示。

3. 数据的页面显示问题。
为保持用户的输入与页面显示的一致,可能要对空格等做特殊处理:
str = str.replaceAll(" ","&nbsp;");
然后使用标签(注意escape):
<s:property value="***" escape="false" />
还有一种方法就是后台不做任何转换,把原始数据附给js在前台转换。具体哪种方法好就要细细权衡了。

4.自定义interceptor的问题。
Struts2默认每个Action都会自动调用defaultStack interceptor(def in struts-default.xml)。但如果你自定义了interceptor,defaultStack将不再被自动调用。
想和页面做交互的话最好还是加上它:
<interceptor-stack name="Test_InterceptorStack">
  
<interceptor-ref name="Test_Interceptor"/>
  
<interceptor-ref name="defaultStack"/>
</interceptor-stack>

好了,就先到这里了。以后有新的话再补充:>
posted on 2008-08-04 17:47 Atea 阅读(3304) 评论(7)  编辑  收藏 所属分类: Struts

评论

# re: Struts2使用小结 2008-08-05 09:04 YYX
str = str.replaceAll(" ","&nbsp;");
这个情况用replace()即可,这两个方法容易望文生义,理解容易有偏差  回复  更多评论
  

# re: Struts2使用小结 2008-08-05 10:58 123
汗,果然是小节啊.
相当的小.
呵呵.  回复  更多评论
  

# re: Struts2使用小结 2008-08-05 13:44 Happy漫步者
呵呵 赞一个  回复  更多评论
  

# re: Struts2使用小结 2008-08-05 16:46 Atea
@YYX
的确,应该用replace
@123
嗯,有些东西别人写过了我就不写啦:>
  回复  更多评论
  

# re: Struts2使用小结[未登录] 2008-08-05 23:57 alex
str = str.replaceAll(" ","&nbsp;");
这个情况用replace()即可
----------------
不是吧replace 只对字串操作不对字串操作  回复  更多评论
  

# re: Struts2使用小结 2008-09-01 21:05
有什么学习struts2好的资料,推荐一下啊  回复  更多评论
  

# re: Struts2使用小结[未登录] 2008-09-04 08:32 Atea
@猪
官方文档、各种blog;
get_ready_for_struts2.chm,startingstruts2online.pdf,Struts 2 in Action.pdf.  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: