米洗毕,水适量,盖合上,心摇摆,总觉水多了一分或是少了几点,于是重又 加上或倒出少许,其实这丁点份量完全无碍煮出香喷喷的饭来。及至将熟之际, 亦有犹豫,心中默数至少10,如再有不定辄至20,掐火,20对最终质量来说或有 所损。
1. Struts2 的 Action 中可直接用属性来封装请求参数和处理结果,此谓之 属性驱动。也可以像 Struts1 那样使用专门的 ActionForm 来处理请求参数和结 果,只不过 Struts2 用的是一个更单纯的 POJO,这就做模型驱动;此时的 Action 需要实现 ModelDriven 接口,并实现其 getModel() 方法将 Action 与 对应 Model 相关联。
2. 例子说明采用模型驱动的 Action (UserBean 是一个普通 JavaBean,其中 定义了 username 和 password 两个属性):
public class LoginAction implments Action, ModelDriven<UserBean>{ UserBean model = new UserBean(); public UserBean getModel(){ return model; } }
上面例子使用了泛型,Struts2 的 Action 要使用一个模型不需要在配置文 件中作额外的配置。
3. 请求参数自动封装到模型中是由配置 struts-default.xml 中的 ModelDrivenIntercepter 来完成的。要输出模型中值时用标记 <s:property value="model.username"/>。而倘若写成了<s:property value="username"/>,Struts2 也会作智能处理,要是这个 Action 中未定义 username 属性,并且彩用了模型驱动模式,也会输出模型 model.username 属性 ,就像 Struts1 显示 ActionForm 一样可不写 name 属性。
4. Struts2 的异常处理,基本和 Struts1 一样的思维,都提供了声明式异常 处理方式,在 struts.xml 中配置。Struts2 的 <global-exception- mappings .../>、<exception-mapping .../> 分别与 Struts1 的 <global-exceptions .../>、<exception .../> 对应,作用都是声 明 Action 中出现何种类型的异常,转到对应页面,你的 Action 的 execute() 方法只管 throws Exception 就行,剩下的事框架帮你处理。
5. 异常信息的输出,<s:property value="exception"/> 输出异常对 象本身;<s:property value="exceptionStack"/> 输出异常堆栈信息,这 是 Struts1 没有的功能;<s:property value="exception.message"/> 输 出异常的 message 属性。至于标签输出异常国际化消息,可就要借鉴前面的知识 稍加斟酌一番,其实就是:如 execute() throw new Exception("name.error") ,要输出 name.error 对应消息用 <s:property value="%{getText (exception.message)}"/> 即可,如果找不到 name.error 对应消息,会直接 把 "name.error" 原本输出。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索struts2
, 异常
, action
, struts1
, 模型
, 属性
, struts1和struts2
, 输出
, struts2 3 20
, struts2 0 国际化
, 输出异常
, struts2.0modeldriven
, 输出异常显示设备
struts2 表单 国际化
,以便于您获取更多的相关知识。