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

关键字 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源代码,指

出原因。

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值