Struts疑问:页面不用html:form等标签,formbean如何取数据

05-09-26 dongdong205
感觉Struts标签太繁琐了,想用 struts+velocity ,但是页面如果没有html:form等struts标签,页面的form elements 是否能赋值到formbean中,formbean中的validate方法是否还有效。
肯请哪位给点提示。。谢谢了

banq
2005-09-27 18:00
当然不会有效。每个字段实际是通过:

<html:text name="ACTIONFORM名称" propert=""
<p class="indent">

其中name很重要,指定了使用哪个ActionForm。

blueoxygen
2005-10-06 09:51
俺驽钝,不知道啥意思,本来想说可以,因为ActionForm本来也不是就能与form标签使用的,你的url传递,post方式传递的数据,都会被解析出来然后赋予相应的form中field中的值。所以在之前的strus版本,恶意构建请求可以影响到顶层servelt。
但是banq老大说不可以,难道lz是别的意思?你动手做个试验,用标准html控件<input type="text" ....>就知道了。

blueoxygen
2005-10-06 11:20
and read this:
name:The attribute name of the bean whose properties are consulted when rendering the current value of this input field. If not specified, the bean associated with the form tag we are nested within is utilized.
Any JavaBean can be used with the Struts JSP tags to populate a control. But to provide automatic validation of the input, Struts uses its own JavaBean subclass,called the ActionForm.

The ActionForm solution
The Struts solution to HTTP parameter handling is to transform the input fields into JavaBean properties. When a property on the ActionForm matches a parameter in the request, the framework automatically sets the property to the value of the parameter. A Struts developer can work with a trusty JavaBean and leave the HTTP rigmarole to the framework.To harvest request parameters, all the Struts developer needs to do is provide an ActionForm with JavaBean properties that match the names of the HTTP parameters. The rest is automatic.
I think at this problem,banq maybe had misunderstanding of "name" attribute.

dongdong205
2005-10-18 14:32
我找到答案了。
可以只用html的标记 ,只要form中element的name属性与from bean属性对应就可以了 例如:
<input type="text" name="userName"/>
这样输入的值就和formBean 中的属性 userName对应起来,可以直接从action中取得form bean 的属性值,就是从页面输入的

dongdong205
2005-10-18 14:36
刚才那个输入框的 name="userName" ,怎样直接现实html代码啊

fbtdjs
2005-10-21 10:19
使用html的form标签就行了。
<form name="formName" action="...do" method="post" ..>
其中formName可以为任意名字,只要不与jsp中的其他form同名,action就是jsp转向的action,在action中将用
XXForm xxFrom = (XXForm)actionFrom;
将参数actionForm格式化就得到了jsp中的form内容
而在jsp中当然要让input的name属性与XXForm中的属性对应

ecsoftcn
2005-11-04 16:05
那么如果你用这种方式得到了HTML FORM中的值,这可以了,但是如何才能让HTML FORM 中的表单字段取得数据库里面的值呢?

比如更新记录的时候?

blueoxygen
2005-11-06 23:13
> 那么如果你用这种方式得到了HTML
> FORM中的值,这可以了,但是如何才能让HTML FORM
> 中的表单字段取得数据库里面的值呢?
>
> 比如更新记录的时候?

和取得数据库没关系吧。我理解你的意思就是得到某个scope特定的值。那就自己写jsp代码呗。

banq
2005-11-07 20:05
>页面的form elements 是否能赋值到formbean
再看一下你的问题,其实使用jsp:usebean就可以了,或者正如你说通过request.setAttribute来传送。

猜你喜欢