struts中,如何使用formbean来初始化表单?

04-02-19 jaqwolf
我希望update数据库中的一条记录。如何利用一个已经formbean来初始化一个update表单??

我曾经试图这样来解决问题:

1。在formbean里面给属性赋初始值,比如:

代码:

public class formbean{

private String foo = "aaa";

....

}

这样的话,是可以给表单赋初始值的,但是初始值的内容必须写死。这样只能用于给创建一条记录的表单初始化,而update必须从数据库中读取老的数据来初始化。

2。也有人提议:不用构建formbean,直接setAttribute来填充表单中的缺省值。

我觉得这种方法不是太好,从感情上来说,让formbean初始化一个form更让人觉得自然,开发也简单。其次我目前也没有找到给,option,options,select之类的form控件赋初始值的方法。

我找了很多地方,没有找到,只好在这里发这种简单的问题:(

GzEric
2004-02-20 15:06
FormBean里边应该有setter吧,就有setter做intialize啊;其实initialize的工作应该在getFormBean()的时候就做了

至于option和select之类的选定,就是在attribute里边加checked或者selected,这些都是HTML的知识了吧:)

jaqwolf
2004-02-20 17:13
比如说,有一个action=/admin/prepareToUpdateFoo.do用来读取老的foo的信息,以便于更新。

不知道你是否试过,当你提交给prepareToUpdateFooAction的请求的页面没有表单的时候,form参数是为空的!

问题是我form = new FooBean(),并

form.setXXX

request.setAttribute("form",form);

后,forward的页面(prepareToUpdateFoo.jsp)依然不认为我已经为已经为页面中的form建立了一个对应的bean,而是自行创建了一个新的对象。

源码中是如此:

in initFormBean();

Object bean = pageContext(beanName,....);

if(bean == null){ // create a new formBean ...}

因此我已经稍微改动了一下源码:在if(bean == null)之前加入:

if(bean == null){ bean = pageContext.getRequest().getAttribute(beanName,...)

这样struts构建form的时候就不会创建新的formbean来初始化它,而是用我set到attribute中的formbean来初始化它。

option中你说的那些选项,并不是struts的html taglib都有相应的property对应的!我的页面是用taglib写的,如果用html当然不会存在这一系列的问题。

rypan
2004-03-04 13:30
> 比如说,有一个action=/admin/prepareToUpdateFoo.do用来?> 取老的foo的信息,以便于更新。

>

> 不知道你是否试过,当你提交给prepareToUpdateFooAction的

> 肭蟮囊趁婷挥斜淼サ氖焙颍form参数是为空的!

>

> 问题是我form = new FooBean(),并

> form.setXXX

> request.setAttribute("form",form);

> 后,forward的页面(prepareToUpdateFoo.jsp)依然不认为?> 已经为已经为页面中的form建立了一个对应的bean,而是自行

> 唇艘桓鲂碌亩韵蟆?>

> 源码中是如此:

> in initFormBean();

>

> Object bean = pageContext(beanName,....);

> if(bean == null){ // create a new formBean ...}

>

> 因此我已经稍微改动了一下源码:在if(bean ==

> null)之前加入:

> if(bean == null){ bean =

> pageContext.getRequest().getAttribute(beanName,...)

>

> 这样struts构建form的时候就不会创建新的formbean来初始化

> 怯梦set到attribute中的formbean来初始化它。

>

>

> option中你说的那些选项,并不是struts的html

> taglib都有相应的property对应的!我的页面是用taglib写的

> 绻html当然不会存在这一系列的问题。

FooBean form = new FooBean();

request.setAttribute("FooBean", form);

//跳转到页面

happycpa
2004-03-05 08:41

<action path="\PrepareUpdate" type="PrepareUpdateAction"
validate="false"
name="UpdateForm"
scope="request">
<forward name="success" path="\update.jsp"/>
</action>

<action path="\ProcessUpdate" type="ProcessUpdateAction"
validate="true"
input="\update.jsp"
name="UpdateForm"
scope="request"
>
<forward name="success" path="..."/>
</action>
在PrepareUpdateAction中初始化UpdateForm,在update.jsp显示.在ProcessUpdateAction中处理.

猜你喜欢
2Go 1 2 下一页