1. 程式人生 > >struts2中s:select標籤從前後臺的取值

struts2中s:select標籤從前後臺的取值

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的時候直接用#號使用)