`
aine_pan
  • 浏览: 45095 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Struts2 中select使用心得

    博客分类:
  • dojo
阅读更多
最近学习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其实帮我们做了大部分的事情,而我们只要知道,我们还需要填些什么。
终于搞完了,自学还是需要点力气的。
记录以备查看
分享到:
评论

相关推荐

    关于struts实验时的临时总结

    **问题描述**:在Struts2中,希望在按钮上显示自定义的图片而非默认文本。 **解决方案**: 1. **使用`s:submit`标签**:通过设置`src`属性指向图片路径。 2. **示例代码**: ```html ();" src="./images/bn/...

    struts跟数据库的笔记,心得.rar

    2. 事务管理:在Struts中,事务通常在服务层(Service Layer)进行管理,可以使用编程式事务或者声明式事务(如Spring的@Transactional注解)。 总结,本笔记详尽地记录了在Struts框架下如何进行数据库操作,涵盖了...

    struts2开发经典总结,错误汇总

    以下是对Struts2开发中常见问题和心得的详细解释: 1. OGNL表达式使用: 在JSP页面中,OGNL(Object-Graph Navigation Language)是Struts2用来表达和操作对象属性的语言。为了使OGNL表达式生效,你需要在JSP页面...

    (3.0版本)自己写的struts2+hibernate+spring实例

    jar包:项目中除了使用了struts2,hibernate3.0和spring1.8以外(用spring2.0的包也可以.不能低于1.8的包.)还是用了junit,ajax,第三方的table组件.等等.所以需要下载相对应的包. 为了上传jar.我专门申请了一个网盘.所有...

    java开发面试总结

    - SQL:查询语句(SELECT)、插入(INSERT)、更新(UPDATE)、删除(DELETE)、事务控制、存储过程等,面试中可能要求编写复杂的SQL查询。 总的来说,Java开发面试不仅测试你的技术深度,也考察你对全栈开发的...

    java最新面试宝典

    - Struts2与SpringMVC的区别。 - 如何处理表单验证。 **9.5 Hibernate框架** - **知识点概述:** - POJO与POI的区别。 - ORM(Object Relational Mapping)的实现。 - Session与SessionFactory的作用。 - ...

Global site tag (gtag.js) - Google Analytics