Struts2标签之Checkbox详解

Struts2标签之Checkbox详解

    开发环境: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"。

    哈哈,就这么多了。

你可能感兴趣的:(struts)