貌似Struts2 标签都快忘光了 今天先来一发struts2的select标签:
首先从简到难,静态赋值:
1
|
<
s
:
select
name
=
"user.sex"
list
=
"#{'0':'男','1':'女'}"
label
=
"性别"
headerKey
=
""
headerValue
=
"请选择性别"
>
<
/
s
:
select
>
|
这样就会出现下拉框,默认是请选择性别,点开后是男女,根据firebug,看到男女前面对应的是0和1,比起原生态的select标签简单多了。
注释:这里从页面来静态构造下拉选项,关键点是list=”#{‘0′:’男’,’1′:’女’}” 通过它实现的select的两个option 。headerKey指定默认的选项”key”,headerValue指定默认的选项”value”。
再看看设置下拉列表的数据:
1
2
3
4
5
6
7
8
|
<%
java
.
util
.
HashMap
map
=
new
java
.
util
.
LinkedHashMap
(
)
;
map
.
put
(
1
,
"A公司"
)
;
map
.
put
(
2
,
"B公司"
)
;
map
.
put
(
3
,
"C公司"
)
;
request
.
setAttribute
(
"map"
,
map
)
;
request
.
setAttribute
(
"aa"
,
"D公司"
)
;
%>
|
1
|
<
s
:
select
list
=
"#request.map"
label
=
"abc"
listKey
=
"key"
listValue
=
"value"
value
=
"#request.aa"
headerKey
=
"0"
headerValue
=
"aabb"
>
<
/
s
:
select
>
|
value的值设置为了2,所以初始化下拉框时,会自动选择key值为2的选项。
最后,配合Struts2的action看看效果吧:
UserDao的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
@Repository
(
"userDao"
)
public
interface
UserDao
extends
SqlMapper
{
public
List
<User>
selectAll
(
)
;
public
User
getById
(
Integer
id
)
;
public
User
loginCheck
(
@Param
(
"loginName"
)
String
login_name
,
@Param
(
"password"
)
String
password
)
;
public
int
updateUser
(
User
user
)
;
public
int
deleteById
(
Integer
id
)
;
public
int
add
(
User
user
)
;
@Select
(
"SELECT a.*,b.* from users a ,orgs b where a.org_id = b.id"
)
public
List
<Map>
getUserInfo
(
)
;
@Select
(
"SELECT * from orgs ORDER BY id"
)
public
List
<Map>
getOrgs
(
)
;
}
|
UserAction的代码:
1
2
3
4
5
6
7
8
9
10
11
12
|
@Action
(
"getuserinfo"
)
public
String
getAllUsers
(
)
{
List
<Map>
userList
=
userDao
.
getUserInfo
(
)
;
List
<Map>
orgs
=
userDao
.
getOrgs
(
)
;
if
(
userList
!=
null
)
{
ServletActionContext
.
getRequest
(
)
.
setAttribute
(
"userlist"
,
userList
)
;
ServletActionContext
.
getRequest
(
)
.
setAttribute
(
"orgs"
,
orgs
)
;
return
SUCCESS
;
}
else
{
return
ERROR
;
}
}
|
试图jsp页面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<
div
class
=
"adduserbox"
>
<
div
class
=
"tit"
>新建帐号
<span>
X
<
/
span
>
<
/
div
>
<
form
action
=
"adduserinfo.feinno"
method
=
"post"
name
=
"saveForm"
id
=
"saveForm"
>
<
div
class
=
"content1"
>
<
div
class
=
"name"
>
<
div
class
=
"fields"
>姓名:
<
/
div
>
<
input
type
=
"text"
name
=
"name"
placeholder
=
"请输入姓名"
autocomplete
=
"off"
>
<
/
div
>
<
div
class
=
"name"
>
<
div
class
=
"fields"
>电话:
<
/
div
>
<
input
type
=
"text"
name
=
"svc_url"
placeholder
=
"请输入电话号码"
autocomplete
=
"off"
>
<
/
div
>
<
div
class
=
"name"
>
<
div
class
=
"fields"
>公司:
<
/
div
>
<
s
:
select
name
=
"company"
list
=
"#request.orgs"
headerKey
=
""
headerValue
=
"请选择公司"
listKey
=
"id"
listValue
=
"org_name"
>
<
/
s
:
select
>
<
/
div
>
<
div
class
=
"name"
>
<
div
class
=
"fields"
>邮箱:
<
/
div
>
<
input
type
=
"text"
name
=
"img_url"
placeholder
=
"请输入邮箱地址"
autocomplete
=
"off"
>
<
/
div
>
<
div
class
=
"name"
>
<
div
class
=
"fields"
>登录帐号:
<
/
div
>
<
input
type
=
"text"
name
=
"img_url"
placeholder
=
"请输入登陆账号"
autocomplete
=
"off"
>
<
/
div
>
<
div
class
=
"other"
>
<
button
class
=
"btn left blue"
id
=
"saveQuickService"
>保存
<
/
button
>
<
button
class
=
" write btn right"
id
=
"calcle"
>取消
<
/
button
>
<
/
div
>
<
/
div
>
<
/
form
>
<
/
div
>
|
这段代码是jsp里面的一块,点击新增用户弹出的弹出窗。
大家可以看到在“公司”这一个表单里的使用方法,首先给一个名称name属性,然后需要现实的List,list属性,listKey说明下拉框的key值对应id(公司ID)字段,listValue说明下拉框的显示部分对应org_name(公司名称)字段。很简单,很强大,很快捷。