• struts2中s:select标签的使用


    1.第一个例子:

    <s:select list="{'aa','bb','cc'}" theme="simple" headerKey="00" headerValue="00"></s:select>

     

    2.第二个例子:

    <s:select list="#{1:'aa',2:'bb',3:'cc'}"  label="abc" listKey="key" listValue="value"  headerKey="0" headerValue="aabb">

     

    3.第三个例子:

    <%

     

    HashMap map = new LinkedHashMap();

    map.put(1,"aaa");map.put(2,"bbb");

    map.put(3,"ccc");

    request.setAttribute("map",map);

    request.setAttribute("aa","2");

     

    %>

     

    <s:select list="#request.map"  label="abc" listKey="key" listValue="value" value="#request.aa"  headerKey="0" headerValue="aabb"></s:select>

     

    摘抄自 http://www.cnblogs.com/modou/articles/1326683.html

     -----------------------------------------------------------------------------------------------------------------------------------------------

    struts2的select标签中,常用的有以下几个属性:

    (1)struts2中的select 标签中,必须设置的属性只有一个,即是list。

    (2)select标签的list中必须有值,不然会报错。如果没有值,可以加上headerKey, headerValue,这样就可以通过了。如:

    xml 代码
    <s:select   name="geElement.childType" list="childTypeList" listKey="key"  listValue="value" headerKey="0" headerValue="--请选择子类型--"/>  
    其中,即使list中有值,我们也通常会加上headerKey, headerValue,即列表中显示的第一个选项。注意,headerKey不可以为空,不可以为-1。

    (3)list属性:通常是在action中定义的,必须是一个可以迭代的源,如为一个List, Map, Set等。如果是一个Map,那么map的key就对应于select标签中的value,map中的value就对应于select标签中的option。而如果是一个List或者是一个Set,那么可以通过listKey和listValue指定。

    (4)listKey和listValue:listKey即对应于select标签中的value, listValue即对应于select标签中的option。

    (5)name属性:即是表单中select的名称。

    使用例子:

         比如在做人员信息管理系统中,需要设置人员的民族、籍贯等信息,而这些信息一把不需要用户手动输入,而是通过下拉框进行选择,那么使用struts2的select标签应该如何实现呢,好,请看下面:
        在Action类中,添加一个成员,String nationId;民族Id,设置getter和setter方法,添加一个Map类型的成员变量,Map nationMap;里面存放民族Id和对应的民族名称,设置getter和setter方法,在execute方法中,添加如下代码:
        nationMap.put("1","汉族");
        nationMap.put("2","苗族");
         然后,在jsp页面中使用select标签,注意要加入标签库的引用:<% taglib uri="/struts-tags" prefix="s" %>,当然了一定要加入struts2的jar包才可以哦

       使用标签:   <s:select name="nationId" list="nationMap"></s:select>
    这样就可以了,简单吧!
       上面list里面用的是Map类型的变量,其实list里面也可以是List类型的变量,那么如果是List类型的变量,select标签就需要使用这种形式
          <s:select name="nationId" list="nations" key="name" value="id"/>
       其中nations是List类型的变量,里面封装了一个Bean,Bean里面定义了两个变量,一个是id,一个是name。这样就可以了。

    -----------------------------------------------------------------------------------------------------------------------------------------------

    今天通过url传值,却发现select不能获取传递过去的值,让我很郁闷,搞了半天才弄明白怎么回事!趁着这股劲说说select的用法吧!

    首先上官方介绍:
    地址 : select tag reference

    <s:action name="beanList" namespace="/system" id="bean" />
    <s:select headerValue="--Please select--" headerKey="" list="#bean.testList"
    name="obj.userName" listKey="userName" listValue="userName" value="%{obj.userName.trim()}"/>

    上面就是我使用的test实例了!挨个解释吧!

    首先你要用到select,可以只使用 <s:select>标签,解释下这个标签属性:
    headerValue : 默认值value
    headerKey :    默认name
    list : 源数据 (可以在action方法里从数据库获取list)
    name : 被选数据存放的位置(这里我方在对象obj的属性值userName中<需在action中定义该对象>)
    listKey : 下拉选项的name
    listValue : 下拉选项的value
    value : 默认值

    但是一个下拉列表往往是可以重复使用的,那么我们将它单独定义到一个action中,这里我的action的namespace是system,所以如我们上面定义的<s:action>标签:
    name : 源数据名(对应get方法名)
    namespace : 我们在struts.xml中定义的name
    id : 相当于别名(在后面调用该actiond的时候直接用#号使用)

    那就这样了,我就用到这些!

    今天遇到的是什么问题呢? 就是value了. 我在form表单跳转的时候下拉列表可以很好的保存值,但是通过url跳转的时候始终无法获取值!我在页面可以打印出传递的值,可到了下拉列表就不行!
    后来试了老半天,才发现是html在eclipse中format的时候回车键被换成空格,这让我的值后面都有了空字符串,而select获取默认值又是通过key来一一对应的,所以就获取不到了,在后面加上trim属性就好了,太残念了....
    还有获取值的方式也很郁闷,使用%来获取的,看来的确要补下ognl才行啊.....

  • 相关阅读:
    SpringBoot统一全局响应(5)
    SpringBoot统一异常处理(4)
    Spring Cloud Alibaba-Gateway搭配Nacos实现动态路由(4)
    SpringBoot使用javax.validation进行参数校验(3)
    SpringBoot使用日志(2)
    WPF 之 ObservableCollection 动态数据集合的使用(二)
    WPF 之 INotifyPropertyChanged 接口的使用 (一)
    数据库访问框架 Chloe
    Navicat Premium 的破解安装教程
    C#定位文件位置并修改字节数据
  • 原文地址:https://www.cnblogs.com/firstdream/p/2395690.html
Copyright © 2020-2023  润新知