Struts 2读书笔记------Struts 2的类型转换

           所有的MVC 框架,都需要负责解析 HTTP 请求参数,并将请求参数传给控制器组件。由于 HTTP 请求参数都是字符串类型,但是 java 是强类型的语言。,因此 MVC 框架必须将这些字符串参数转换成相应的数据类型。

           Struts 2提供了非常强大的类型转换机制。Struts 2的类型转换可以基于ONGL表达式,只要把HTTP参数命名为合法的ONGL表达式,就可以充分利用Struts 2的类型转换机制。

 

           1Struts 2内建的类型转换器

           Struts 2可以完成大多数常用的类型转换。这些常用的类型转换时通过Struts 2内建的类型转换器完成的。如下:

          2、基于ONGL的类型转换

          借助于ONGLStruts 2允许以另一种简单方式将请求参数转换成复合类型。

public class LoginAction implements Action {

	private UserBean user;
	private String tip;

	public UserBean getUser() {
		return user;
	}

	public void setUser(UserBean user) {
		this.user = user;
	}

	public String getTip() {
		return tip;
	}

	public void setTip(String tip) {
		this.tip = tip;
	}

	//处理请求方法
	public String execute() throws Exception {
		if(getUser().getName().equals("chenssy")&&getUser().getPassword().equals("chentmt")){
			setTip("转换成功");
			return SUCCESS;
		}
		else{
			setTip("转换失败");
			return ERROR;
		}
	}

}

          Struts 2 接收到HTTP请求参数后,需要将这些参数封装成UserBean对象。但是我们无需作任何的处理,只需要在定义表单域是使用ONGL表达式来定义表单域的name属性。

 <s:form action="Login">
    	<s:textfield name="user.name" label="用户名"></s:textfield>
    	<s:textfield name="user.password" label="密码"></s:textfield>
    	<s:submit value="转换" ></s:submit>
    	<s:submit value="重置" ></s:submit>
   </s:form>

     对于请求参数名是采用user.nameuser.password---这就是ONGL表达式的形式。Struts 2会相应的参数赋值给Action实例的user的相应的属性。

     通过上面的方式,Struts 2可以将普通请求参数转换成复合型类型对象,但是一般要注意下面几点。

      1、因为Struts 2将通过反射来创建一个复合类的实例,因此系统必须为该复合类提供无参数的构造器。

      2、如果希望使用user.name请求参数的形式为Action实例的user属性的name属性赋值,则必须为user属性对象的复合类提供setName()方法。


 

   读李刚《轻量级java EE企业应用实战》

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大明哥_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值