最近学习SHH,发现真的很蛋疼,封装的太多,debug起来就是觉得不爽,搞了所有的source再学习,感觉才好点。
今天记录点Ajax select标签。
先看看实现:
<s:url id="temp" value="**.action"></s:url>
<sx:div href="%{temp}" theme="simple"/>
这个struts是2.1版本以上的,ajax div标签已经改变了。
看看后台响应action的地方:
public String list(){
tempList = service.getList();
return SUCCESS;
}
调用逻辑层返回用于显示在页面上的数据源List,当然get set方法不能少。
在返回的页面放一个select标签:
<s:select list="tempList" listKey="id" listValue="valueName" cssStyle="width:145px;"
name="paraName" value ="paraValue" emptyOption = "false" headerKey="0" headerValue="请选择..."/>
tempList 对应的是后台的list名称,必须有get set构造器
listKey="id" listValue="valueName" 对应的是需要展现的list的key和value的栏位名,用于下发select时候。
name="paraName" 表示当前控件的名称,提交表单中的name
value ="paraValue" 表示当前控件的值,是用户选择后的值
headerKey 表示默认加一个选项,显示成“请选择。。。”的样式
至此已经可以展现动态的list在页面了,下面主要解决如果默认让select选中一个值,比如在edit页面,load下来这个list的时候,希望默认选中之前的值。本来我试着通过前台的ajax来实现,因为<sx:div>标签有afterNotifyTopics属性,即在ajax加载完成之后发表的话题清单。大约要这样实现:
<script type="text/javascript">
dojo.event.topic.subscribe("topicName",function(event,widget){
dojo.byId("divName").value = 0;
});
</script>
这样就要求div定义如下:
<s:url id="temp" value="**.action">
</s:url>
<sx:div id ="divName" href="%{temp}“ afterNotifyTopics = "topicName" theme="simple"/>
我最初以为这样可以实现选择select的某个值,但是结果可想而知,根本不能实现,因为div标签被dojo转义了,dojo.byId("divName")取到的是什么对象我也不太清楚,找不到设置选中项的属性,试了好久,如果哪位知道可以告诉我。
后来换了思路,使用了后台的赋值逻辑,struts已经帮我们封装好了,只要你数据源中存在对应的值,并且相应的构造函数都有了,struts会自动将值填上去的(model驱动)。前提是在页面上用param标签将需要需要显示的值传给后面的显示页面:
<s:url id="temp" value="**.action">
<s:param name="paraName" value="paraValue" />
</s:url>
<sx:div href="%{temp}" theme="simple"/>
我之前犯错了,在**.action中没有写需要显示的值的构造函数。
其实回过头来想想,页面赋值肯定不用那么麻烦的自己去实现,struts肯定已经想到了,而使用param标签可以在action中赋值对应的值,这样在load显示页面的时候就肯定已经有值了。struts其实帮我们做了大部分的事情,而我们只要知道,我们还需要填些什么。
终于搞完了,自学还是需要点力气的。
记录以备查看
分享到:
相关推荐
struts2校验框架使用心得 希望对初学者有所帮助
struts2中select从action中动态获得,访问jsp页面时候,先要请求action,得到select标签的内容!
struts2学习心得,总结了struts2的常用方法,经验
struts2标签使用例子 struts2标签使用例子 struts2标签使用例子struts2标签使用例子
struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别...
struts2实现页面select标签默认选中,很简单的,一看马上就会了
J2EE中使用struts2实现的select和doubleselect标签
struts2中的国际化 struts2转化器 struts2实现表单数据校验 struts2的基石-拦截器 struts2中实现IOC struts2中实现文件上传 struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2...
初学者的眼光看世界。 Struts2和Struts1差不多。
在struts2中使用freemarker模版.doc
struts2和tomcat使用struts2和tomcat使用
struts2 中 OGNL表达式的使用struts2 中 OGNL表达式的使用
Struts2-Double-Select-Example
struts2源码 struts2案例 struts2使用包
用struts2 doubleselect标签实现的二级联动下拉菜单
Struts2是一套非常优秀的Java WEB应用框架,实现优雅、功能强大、使用简洁。目前已有大量的企业项目采用Struts2来作为Web框架进行开发,掌握Struts2是每个进行Web开发的Java程序员的一项必备技能。 本视频对Struts2...
本人在平时J2EE的学习过程中的一些心得体会
这是一个对struts一个标签(html:select)的操作,主要为了操作下拉列表控制的数据读取,适合于初学者。。
Struts2输入校验总结 Struts2输入校验