您的位置:首页 > 编程语言 > Java开发

【转】struts2中s:select标签从前后台的取值

2012-09-13 15:58 309 查看
1.第一种:

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

2.第二种:

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

3.第三种(从数据库读数据)

action中:

public class ServiceRelease {

private ProvidingService ps;

private List<ProvidingService> listPS = new ArrayList<ProvidingService>();

生成get()/set()方法

public String getServiceRelease(){//action,页面会调用此action

        listPS = serviceManageService.getService();    //getService();    是我查询数据库所有服务的方法

        return "test";  //通过struts2跳转页面

         }

}

struts2.xml文件中:

<package name="servicemanage" extends="default" namespace="/servicemanage">

       <action name="servicerelease" class="serviceRelease"><!--serviceRelease我是通过spring配置action路径的,这可以直接写,如:com.hp.cop.servicemanage.action.ServiceRelease-->

    <result name="test">

               /testList.jsp  <!--跳到testList.jsp页面-->

            </result>

</package>

testList.jsp页面:

<body>

     <s:action name="servicerelease!getServiceRelease" namespace="/servicemanage" id="bean" />

            <s:select  headerValue="--Please select--" headerKey="0"

             list="#bean.listPS" name="" listKey="id" listValue="serviceName"></s:select>

</body>

***注意引入struts2的标签库

<%@ taglib prefix="s" uri="/struts-tags"%>

解析上面的代码:

<s:select>标签,解释下这个标签属性:

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

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

headerValue :

     默认值value

headerKey :  

     默认name

即使list中有值,我们也通常会加上headerKey, headerValue,即列表中显示的第一个选项。注意,headerKey不可以为空,不可以为-1

list :

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

name : 被选数据存放的位置(action中可以通过name值获取我们所选中的值)

listKey : 下拉选项的name

listValue : 下拉选项的value

listKey即对应于普通select标签中的value值, listValue即对应于普通select标签中的option所显示的值

value : 默认值

一个下拉列表往往是可以重复使用的,那么我们将它单独定义到一个action中,这里我的action的namespace是servicemanage,所以如我们上面定义的<s:action>标签:

name : 源数据名(这里我的为 servicerelease!getServiceRelease ,也就是 名称空间!action名(注意是感叹号))

namespace : 我们在struts.xml中定义的name(我定义的为  servicerelease)

id : 相当于别名(在后面调用该actiond的时候直接用#号使用)

转自: http://tanglei528.iteye.com/blog/649417
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息