a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 391|回复: 0

[专业语言] Java认证辅导之JavaBean属性值动态设置

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
Java认证辅导之JavaBean属性值动态设置
' u$ C$ _5 P& X4 I: qJavaBean属性值动态设置
6 _  H) @: W4 [' X4 t; Y概念/ k* q8 o' c- t9 l: E( |: M# L
使用属性表达式设置Java Bean的属性值。
0 y! V7 R0 o7 s  L' a& k4 s; t4 h属性表达式格式与Java编程的表达式类似,使用”[n]”表示数组引用,”。”表示对象引用。
. T# y( z% ~8 B/ B9 w% g+ G5 j例如:
& Z5 {0 x) Z# N( m4 d“name”,表示Java Bean的name属性。
7 ?3 x/ F5 r# S7 ~2 x( h! A3 i' Y6 P+ T“parent.name”,表示Java Bean的parent属性的name属性。
4 ^3 v6 Q6 m3 z: ?; `! y“parent.parent.name”,表示Java Bean的parent属性的parent属性的name属性。  P( |3 n5 _0 K& B1 T
“children[2].name”,表示Java Bean的children属性的第2个元素的name属性。* C! @# `: v% ]! C8 r" _! L  a
使用属性表达式定位到指定属性后,根据属性的类型,将输入值转换成该属性值完成赋值。6 M2 D) R% b8 G- l5 G; N
使用* f8 H# j6 i' Z' l5 C
org.zjulhs.el.Property的静态方法setProperty实现对属性的赋值:" u$ C, a5 k/ g6 X/ l' `! z1 B4 U
public static void setProperty(Object bean, String name, String[] values);
/ A- i& k( }" }$ s: Q参数:6 ^$ x; u( h( C$ w% P; C: ^9 j
bean
2 p) Y, \7 g, X% O) b! k9 @Java Bean对象  ]% J& ~: z2 r+ ^5 F: J
name
, F2 ~5 s* ^! Y- S/ C9 uJava Bean的属性表达式# F5 w* j; I9 A, ~  Y
values6 _$ R' ~! e% i3 \& u( f
name指定的属性的值,型如T[]的数组,values跟T[]一一对应,其他属性类型使用values[0],如果属性为null,会自动初始化为相应类型的对象。
' ~9 S7 z* M3 U0 w2 P# Z$ ?例子1 h; h4 F. |$ c2 v7 P) g( M
参考org.zjulhs.el.Person的main方法,可以直接运行。
4 Q8 o; h' p- M; J: _5 S" G扩展
# x" p$ O1 d$ Y2 l$ d实现org.zjulhs.el.IConvert接口,可以扩展自定义对象的转换方法,参考org.zjulhs.el.Property的静态属性CONVERTS。; ^4 |. N& k" k1 t; l+ }
应用
$ _2 n: D: w' Y. {0 _* a/ E4 U可以用于J2EE的表单数据到Java Bean属性值的自动映射,比如表单订单的产品列表到Java Bean的ArrayList《Product》 products自动映射,省去传统的request.getParameter方法和数据类型转换的麻烦,可以通过下面代码实现绝大部分表单值的自动映射:1 M, m. s- Q% @2 t* ]
Object bean = formBean; // 保存表单数据的对象$ Y" |* V, ^! Y- t5 Z$ r
Enumeration《String》 iter = (Enumeration《String》)request.getParameterNames();1 l: O& T4 w+ H8 `4 @
while(iter.hasMoreElements())
' u5 r7 {$ t. p6 M& T- z{
/ U$ J$ B9 {4 ^9 Q; C" DString key = iter.nextElement();
" N5 C7 B0 U# Y9 U, y3 kString[] values = req.getParameterValues(key);* h" O( {* z) F: L0 |2 e
Property.setProperty(bean, key, values);' ]2 b1 q# G8 x( J
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-4-27 01:40 , Processed in 0.517221 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表