sparta-紫杉 2010-4-14 16:53
开发环境:eclipse3.4.2 + weblogic10.3 + jdk1.6.0_13 + Struts2.1.8 + Spring3.0.1 + Hiberante3.3.2
在Web系统或项目的开发过程中,jsp页面上经常会使用checkbox来实现用户多选的要求。
普通的写法多半是这样:
<input type=checkbox name="abc" value="1" checked>北京<br>
<input type=checkbox name="abc" value="2">上海<br>
<input type=checkbox name="abc" value="3">天津<br>
那么既然使用了SSH2的开发框架,当然要使用Struts2的<s:checkbox/>标签来实现用户的多选要求。
令人不解的是,网络上大多是在详解<s:checkboxlist/>,但对于<s:checkbox/>却描述的很少。
今天正好要用到这个<s:checkbox/>,咱也不妨来“详解”一下子,一来是做个笔记,二来若是能为各位程序达人在关键时刻提个醒,以解决探索之苦!
至于<s:checkbox/>和<s:checkboxlist/>的区别我不谈了,大家可以在百度上搜一下。
其实,<s:checkbox/>还是挺好入门的,不外乎有下面几个属性,id、name、value、fieldValue、label共计5个常用属性。
id和name: 指的是该标签的标识id和标识名。
value : 指是否选中,其值只能为True或False,相当于传统checkbox中的checked。
fieldValue : 相当于传统checkbox中的value值。
label : 对于该checkbox显示在页面上方框后面的描述。
还是打个简单的比方吧, 比如我要用角色id(RoleId)和角色名称(RoleName)来生成很多checkbox,那么采用如下的写法。
<s:checkbox id="permisskey" name="permisskey" label="超级管理员" value="true" fieldValue="Role_Admin"/>
<s:checkbox id="permisskey" name="permisskey" label="普通用户" value="false" fieldValue="Role_User"/>
那么在生成真正的Html页面时,大约是下面这样的形式:
<input type="checkbox" id="permisskey" name="permisskey" checked value="Role_Admin">超级管理员
<input type="checkbox" id="permisskey" name="permisskey" value="Role_User">普通用户
当然上面的例子建立在Struts2默认的主题(theme)下,大家可别忘了这个关键的属性“theme”。
不妨再加个属性试试吧:
<s:checkbox theme="simple" id="permisskey" name="permisskey" label="超级管理员" value="true" fieldValue="Role_Admin"/>
<s:checkbox theme="simple" id="permisskey" name="permisskey" label="普通用户" value="false" fieldValue="Role_User"/>
设置了theme="simple"之后,便自动放弃了Struts2的一些装饰。那么显示的页面上的结果会令你大吃一惊的:
<input type="checkbox" id="permisskey" name="permisskey" checked value="Role_Admin">
<input type="checkbox" id="permisskey" name="permisskey" value="Role_User">
注意到没有, 后面的“超级管理员”和“普通用户”两段字眼莫名其妙的消失了。这就是theme起的主要作用。
当然,还需要注意,这个theme是有继承性的, 比方说,这个<s:checkbox/>在一个<s:form/>里面,并且这个<s:form/>里面也设置了theme="simple"的话,就会影响到这个<s:checkbox/>,等于为该<s:checkbox/>设置了theme-"simple"。
哈哈,就这么多了。
-东营 sparta-紫杉 原创,转载请注明出处 :)
http://www.blogjava.net/SpartaYew/
SpartaYew@163.com
QQ:22086526