Struts源码研究发现的一个问题

04-11-15 pirateship
在做Struts的一个项目的时候,想实现ValueObject和ActionForm一样的自动赋值,但是看了一个源码,在FormBeanConfig中找到如下一段代码:
// Add properties
dynaClass.setRestricted(false);
FormPropertyConfig[] props = findFormPropertyConfigs();
for (int i = 0; i < props.length; i++) {
dynaClass.add(props.getName(), props.getTypeClass());
dynaBean.set(props.getName(), props.initial());
}
但是我怎么样也无法找到findFormPropertyConfigs()之前对FormPropertyConfig的赋值,也就是找到ActionForm里面的变量名,然后用
FormPropertyConfig中的setName()方法.如果不用setName()方法,那上面的这段代码用getName()的方法岂不是空穴来风?
请高手指点一二,谢谢!

pirateship
2004-11-16 14:32
怎么没有回答啊?我今天又弄了一天,还是没有弄明白!求各位大侠了!

anonymous
2004-11-16 16:17
不用值对象,就可以拉。

tonykee
2004-12-23 21:51
其实很简单的,比如有个user的valueobject对象里面有username属性那么formbean可以这样写:
class myformbean extends ActionForm {
UserVO user = new UserVO;
public UserVO getUser() {
return user;
}

public void setUser(UserVO user) {
this.user = user;
}
}

jsp里面

<html:text property = "user.username" />就可以和formbean里面的uservo直接绑定数据了

就可以了标签库翻译成
<input type="text" name="user.username">


只不过javascript访问表单对象可要注意了
只能通过:document.getElementById("user.username")访问该文本框


还有,对于Date型数据不能直接和VO进行绑定,需要做些转换,或者修改Struts标签的源代码了,我们做项目都是直接和VO 绑定数据的,formbean 的geter setter一大堆,传来传去很烦的,这样做方便很多。


tonykee
2004-12-23 21:54
jsp里面
〈html:text type="user.username"/〉

标签库翻译过来是
〈input type="textbox" name="user.username"〉

linux_china
2004-12-24 10:01
参考一下这篇文章,主要讲述ActionForm中使用JavaBean和List数据.
http://www.jetmaven.net/documents/j_useJBean_List_inStruts.php