form与action之setter与getter
2013-12-21 15:32
225 查看
对于表单提交数据给action时候,可以简单的用setter与getter函数实现值的传递。
例如在jsp里有这么个form:
<s:form action="login">
<s:textfield name="name" key="user"/>
<s:textfield name="pass" key="pass"/>
<s:submit key="logins" value="submit"/>
</s:form>
那么在action里面只要有相应的setName(String name) setPass(String pass) 方法则提交的时候就可以自动调用setter方法。这个是基于struts2的反射机制。这个操作是由params拦截器完成的,params对应的类是com.opensymphony.xwork2.interceptor.ParametersInterceptor。由于params已经在defaultStack中定义,因此,在未引用拦截器的<action>中是会自动引用params的,如下面的配置代码,在访问first动作时,Struts2是会自动执行相应的setter方法的。
首先,当表格提交后,会检查处理类中是否由相应的setter,如textfield的name为“name”那么对应的setter就应该为“setName",(命名规范下面再细说)。如果有则调用。而对于多个提交数据量来说如果设置相应的setter那么会使得action过于臃肿。可以通过类来实现。
通过定义一个user类,包含name,pass属性,然后再用setUser(user users)方法来传入user类。action中只要包含一个user类就行了。
对应的jsp的form则改为对user属性的赋值。
<s:form action="login">
<s:textfield name="user.name" key="user"/>
<s:textfield name="user.pass" key="pass"/>
<s:submit key="logins" value="submit"/>
</s:form>
还有可以使用modelDriven机制。
setter与getter函数的命名规则:
jsp里name的首字母小写,对应的setter则需要将首字母变为大写,然后在前面加set就是了。如:jsp中name为“login”那么setter为“setLogin”。如果首字母大写,次子母也大写,那么setter只要再name前面加set。如:jsp为:“LOgin"那setter为:”setLOgin"
如果首字母大写,次子母小写,这样是不允许的。至于为什么,只能说不知道,那个反射就这么设置了``学艺不精啦。
还有必须要注意的是setter方法必须为public。否则也无法找到相应函数的。
例如在jsp里有这么个form:
<s:form action="login">
<s:textfield name="name" key="user"/>
<s:textfield name="pass" key="pass"/>
<s:submit key="logins" value="submit"/>
</s:form>
那么在action里面只要有相应的setName(String name) setPass(String pass) 方法则提交的时候就可以自动调用setter方法。这个是基于struts2的反射机制。这个操作是由params拦截器完成的,params对应的类是com.opensymphony.xwork2.interceptor.ParametersInterceptor。由于params已经在defaultStack中定义,因此,在未引用拦截器的<action>中是会自动引用params的,如下面的配置代码,在访问first动作时,Struts2是会自动执行相应的setter方法的。
首先,当表格提交后,会检查处理类中是否由相应的setter,如textfield的name为“name”那么对应的setter就应该为“setName",(命名规范下面再细说)。如果有则调用。而对于多个提交数据量来说如果设置相应的setter那么会使得action过于臃肿。可以通过类来实现。
通过定义一个user类,包含name,pass属性,然后再用setUser(user users)方法来传入user类。action中只要包含一个user类就行了。
对应的jsp的form则改为对user属性的赋值。
<s:form action="login">
<s:textfield name="user.name" key="user"/>
<s:textfield name="user.pass" key="pass"/>
<s:submit key="logins" value="submit"/>
</s:form>
还有可以使用modelDriven机制。
setter与getter函数的命名规则:
jsp里name的首字母小写,对应的setter则需要将首字母变为大写,然后在前面加set就是了。如:jsp中name为“login”那么setter为“setLogin”。如果首字母大写,次子母也大写,那么setter只要再name前面加set。如:jsp为:“LOgin"那setter为:”setLOgin"
如果首字母大写,次子母小写,这样是不允许的。至于为什么,只能说不知道,那个反射就这么设置了``学艺不精啦。
还有必须要注意的是setter方法必须为public。否则也无法找到相应函数的。
相关文章推荐
- ActionScript 3.0 编程体验
- 表格标签table深入了解
- CSS注释、命名、继承性、样式排序等CSS技巧的小结
- table 隔列(行)换色效果让表格结构更清淅
- table高级应用把表格进行到底(必看)
- 表格高级使用技巧_把表格进行到底(必看)
- javascript表格随机排序代码
- JavaScript 自动在表格前面增加序号
- ASP.NET MVC:Filter和Action的执行介绍
- 深入理解JavaScript系列(2) 揭秘命名函数表达式
- jQuery表格列宽可拖拽改变且兼容firfox
- javascript轻松控制表格列样式的脚本代码
- Ajax in action 英文版配书源码 下载
- struts2 jquery 打造无限层次的树
- ajax交互Struts2的action(客户端/服务器端)
- js下为表格内部动态添加行的代码
- struts2 spring整合fieldError问题
- Struts2的s:radio标签使用及用jquery添加change事件
- 用CSS控制表格或单元格强制换行,防止表格被英文单词或中文撑大
- 先NetFx3,再MUI——Windows Server 2012 R2 with Update 无法安装 .Net