您的位置:首页 > 移动开发

HTML的表单元素与Struts的FormBean关联实验(以Struts的helloapp为例)

2006-06-14 13:39 513 查看
关键字 Struts FormBean 关联 大小写

最近在学习Struts编程,刚接触就遇到了一些困惑,这些对来高手来说可能不值一提,而且对高

手来说通过查看Struts源代码直接就能找到答案。但对于新手来说也许实验是最直接的方法。

我是以网上广泛传播的helloapp为例子做的实验。
源代码请链接http://dev.csdn.net/article/47/47301.shtm
http://blog.csdn.net/chenxiaohong3905/archive/2004/11/02/163738.aspx

环境:Struts 1.2+Tomcat 5.5.17+JDK 1.5 + Win2003

提交的大概过程是这样的:HTML的Form(客户提交的表单)-->HelloForm-->HelloAction...

在HTML的Form与HelloForm的如何关联让我有些困惑。

将HTML的Form数据提交给HelloForm有两种方式,一种是在JSP中应用Struts标签,这是helloapp

例子所采用的形式;另一种是直接在JSP中直接用标准的HTML标签编写Form。
第一种形式是通过setUserName和getUserName与JSP的Struts标签实现关联的,这种形式不做讨

论。
另一种形式是通过JSP的标准的HTML标签与FormBean建立联系。

<form name="HelloForm" method="post" action="/helloapp/HelloWorld.do">
Please enter a UserName to say hello to :
<input type="text" name="userName" maxlength="16" size="16"><br>
<input type="submit" name="submit" value="Submit">
<input type="reset" value="Reset">
</form>
有些论坛上说直接用标准的HTML标签提交的数据FormBean无法获得,但实验结果是可行的。

通过多次实验发现<input type="text" name="userName" maxlength="16" size="16">只与

FormBean中的setUserName建立联系。
与其它Form的属性或方法都没有关系。比如getUserName也可以写成其它形式,如getAbc,但Action

也要进行相应修改;HelloForm中的私有属性也可以更成其它的名称,不一定使用“private String

userName = null;”形式,可以使用“private String aaBB = null;”,不一定非要与 <input

type="text" name="userName" maxlength="16" size="16">对应。

由此说明在Struts结构中,name="userName"只与setUserName对应。但仔细观察,发现"U"的大小

写却不同。经过多次实验发现,name的属性第一个字母必须是大写的,如改成

name="UserName",setUserName则不行。问了一下QQ群的朋友说,告诉我说以前的版本Struts是如果

你在HelloForm里写成setUserName后,会先接受name="userName",没有的话再接受name="UserName"

。name="userName"是标准写法,至于为什么我的实验只能使用name="userName",朋友解释说可能是

新版本更加严格的原因吧。

以下是我的实验结果:

setUserName
name="userName"
可行

setUserName
name="UserName"
不可行

setuserName
name="UserName"
不可行

setuserName
name="userName"
可行

setSandyPig
name="SandyPig"
不可行

setSandyPig
name="sandyPig"
可行

由此可见,name的值的第一个字母必须是小写。

但有这样一种特殊情况就是:

setYYYY
name="YYYY"
可行

就是全部都是大写的时候也是可以的。这一点我还是懂不明白,是不是Java对变性,参数和方法的写

法有一套硬性的规定,这我就不知道了,哪位知道告诉我。或者哪位高手能看一下Struts源代码,指

出原因。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: