Struts2 中select使用心得

阅读更多
最近学习SHH,发现真的很蛋疼,封装的太多,debug起来就是觉得不爽,搞了所有的source再学习,感觉才好点。
今天记录点Ajax select标签。
先看看实现:
 

这个struts是2.1版本以上的,ajax div标签已经改变了。
看看后台响应action的地方:
	public String list(){
		tempList = service.getList();
		return SUCCESS;
	}

调用逻辑层返回用于显示在页面上的数据源List,当然get set方法不能少。
在返回的页面放一个select标签:

tempList 对应的是后台的list名称,必须有get set构造器
listKey="id" listValue="valueName" 对应的是需要展现的list的key和value的栏位名,用于下发select时候。
name="paraName" 表示当前控件的名称,提交表单中的name
value ="paraValue" 表示当前控件的值,是用户选择后的值
headerKey 表示默认加一个选项,显示成“请选择。。。”的样式

至此已经可以展现动态的list在页面了,下面主要解决如果默认让select选中一个值,比如在edit页面,load下来这个list的时候,希望默认选中之前的值。本来我试着通过前台的ajax来实现,因为标签有afterNotifyTopics属性,即在ajax加载完成之后发表的话题清单。大约要这样实现:

这样就要求div定义如下:

		    	
		    	

我最初以为这样可以实现选择select的某个值,但是结果可想而知,根本不能实现,因为div标签被dojo转义了,dojo.byId("divName")取到的是什么对象我也不太清楚,找不到设置选中项的属性,试了好久,如果哪位知道可以告诉我。

后来换了思路,使用了后台的赋值逻辑,struts已经帮我们封装好了,只要你数据源中存在对应的值,并且相应的构造函数都有了,struts会自动将值填上去的(model驱动)。前提是在页面上用param标签将需要需要显示的值传给后面的显示页面:

  


我之前犯错了,在**.action中没有写需要显示的值的构造函数。
其实回过头来想想,页面赋值肯定不用那么麻烦的自己去实现,struts肯定已经想到了,而使用param标签可以在action中赋值对应的值,这样在load显示页面的时候就肯定已经有值了。struts其实帮我们做了大部分的事情,而我们只要知道,我们还需要填些什么。
终于搞完了,自学还是需要点力气的。
记录以备查看

你可能感兴趣的:(struts,ajax,dojo)