Struts2 中select使用心得
最近学习SHH,发现真的很蛋疼,封装的太多,debug起来就是觉得不爽,搞了所有的source再学习,感觉才好点。
今天记录点Ajax select标签。
先看看实现:
这个struts是2.1版本以上的,ajax div标签已经改变了。
看看后台响应action的地方:
至此已经可以展现动态的list在页面了,下面主要解决如果默认让select选中一个值,比如在edit页面,load下来这个list的时候,希望默认选中之前的值。本来我试着通过前台的ajax来实现,因为<sx:div>标签有afterNotifyTopics属性,即在ajax加载完成之后发表的话题清单。大约要这样实现:
我最初以为这样可以实现选择select的某个值,但是结果可想而知,根本不能实现,因为div标签被dojo转义了,dojo.byId("divName")取到的是什么对象我也不太清楚,找不到设置选中项的属性,试了好久,如果哪位知道可以告诉我。
后来换了思路,使用了后台的赋值逻辑,struts已经帮我们封装好了,只要你数据源中存在对应的值,并且相应的构造函数都有了,struts会自动将值填上去的(model驱动)。前提是在页面上用param标签将需要需要显示的值传给后面的显示页面:
我之前犯错了,在**.action中没有写需要显示的值的构造函数。
其实回过头来想想,页面赋值肯定不用那么麻烦的自己去实现,struts肯定已经想到了,而使用param标签可以在action中赋值对应的值,这样在load显示页面的时候就肯定已经有值了。struts其实帮我们做了大部分的事情,而我们只要知道,我们还需要填些什么。
终于搞完了,自学还是需要点力气的。
记录以备查看