Struts2中的Select标签:
Struts2的select标签中,常用的有以下几个属性:
(1) struts2中的select 标签中,必须设置的属性只有一个,即是list。
(2) select标签的list中必须有值,不然会报错。如果没有值,可以加上headerKey, headerValue,这样就可以通过了。如:
<s:select name="geElement.childType" list="objectLists" listKey="key" listValue="value" headerKey="0" headerValue="--请选择子类型--"/>如果list没有值,则可以在Action中将该list对象赋一个初值,这样可保证不会出错,如:
private List<Object> objectLists = new ArrayList<Object>();
(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,即下拉框中显示的内容。
listKey值可以由几个变量值组合而成,如选择一个货币名称,则自动显示货币代码和货币符号;
<s:select name="sysCurrency" οnchange="chgcur(this.value)" list="sysCurrencys" value="%{currency.name}" listKey="code+':'+sign" listValue="name" headerKey="" headerValue="请选择货币名称"></s:select>
(5) name属性:即是表单中select的名称。
Struts2中的Action标签:
使用action标签可以允许在jsp页面中直接调用Action,这样,我们就可以在网页中读取数据库中的信息,还可以进行逻辑控制。
action标签的属性:
(1) id:这是一个可选的属性,该属性作为Action的应用id
(2) name:必选属性,通过该属性指定该标签调用哪个ACtion
(3) namespace:可选属性,指定Action的namespace
(4) excuteResult:可选属性,指定是否将Action的处理结果页面包含到当前页面,默认(false)
(5) ignoreContextParams:可选参数,指定该页面中的请求参数是否需要传入调用的Action。
这个标签可以避免许多Service接口的依赖注入,下面以收款单页面中,选择一种付款货币为例,讲述select和Action标签联用时的妙处!
<s:action name="getAllCurrencys" id="getAllCurrencys" namespace="/jsp/xxxxx/admin/basicinfor"/> <s:select list="#getAllCurrencys.currencys" listKey="name" listValue="name" name="orderBill.payCurrency" value="%{orderBill.payCurrency}" headerKey="" headerValue="请选择付款货币"/>
在货币的Action中加入以下代码:
public List getAllCurrencys(){
InitSession();
currencys = basicInforManager.getCurrencyList(webId);
return null;
}
再在Struts配置文件中加入以下代码:
<package name="Currency" extends="struts-xxxxx" namespace="/jsp/xxxxx/admin/basicinfor"> <action name="getAllCurrencys" class="currencyAction" method="getAllCurrencys"/> </package>