关闭

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

标签: strutshtmlinputjspactionstring
1086人阅读 评论(0) 收藏 举报
分类:

关键字 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

猜你在找
【套餐】Hadoop生态系统零基础入门
【套餐】嵌入式Linux C编程基础
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【套餐】深度学习入门视频课程——唐宇迪
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】计算机视觉原理及实战——屈教授
【直播】机器学习之凸优化——马博士
【直播】机器学习&数据挖掘7周实训--韦玮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:128537次
    • 积分:1688
    • 等级:
    • 排名:千里之外
    • 原创:38篇
    • 转载:17篇
    • 译文:0篇
    • 评论:10条
    文章分类
    最新评论
    朋友的Blog