struts2之ModelDriven的用法
在Struts 2中,提供了另外一种直接使用领域对象的方式,就是让action实现com.opensymphony. xwork2.ModelDriven接口。ModelDriven让你可以直接操作应用程序中的领域对象(模型对象),允许你在Web层和业务逻辑层使用相同的对象。
ModelDriven接口中只有一个方法,如下:
public T getModel()
该方法返回一个用于接收用户输入数据的模型对象。
在页面中,这个模型对象中的属性可以直接通过属性名来访问(如username),而不需要使用形如“user.username”这种格式的表达式,在action中也不需要为这个模型对象提供JavaBean风格的getter和setter方法。但是必须要在action中进行new操作,ModelDriven要使用泛型。
LoginAction类实现ModelDriven接口如下所示:
package org.sunxin.struts2.ch03.action;
import org.sunxin.struts2.ch03.model.User;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ModelDriven;
public class LoginAction implements Action,ModelDriven<User>
{
private User user = new User();
@Override
public String execute() throws Exception
{
…
//省略
}
@Override
public User getModel()
{
return user;
}
}
login.jsp页面如下所示:
…
<form action="login.action" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><input type="reset" value="重填"></td>
<td><input type="submit" value="登录"></td>
</tr>
</table>
</form>
…
LoginAction实现了ModelDriven接口,表单字段就不需要再使用 “user.”前缀了。登录成功的success.jsp页面如下所示:
…
<body>
<h3><s:property value="username" />,欢迎您登
录程序员之家网站(www.sunxin.org)。</h3>
</body>
…
struts2之ModelDriven的用法的更多相关文章
- 接触Struts2的ModelDriven<>接口
最近在学SSH框架,实战项目,用到了Struts2的ModelDriven<>接口,在这做一点记录 ModelDriven,意为模型驱动,意思是直接把实体类当成页面数据的收集对象 参考他人 ...
- struts2重点——ModelDriven
一.属性驱动 在目标 Action 类中,通过 setXxx() 方法来接收请求参数. 二.模型驱动 1.ParametersInterceptor 拦截器工作原理 ParametersInterce ...
- 关于struts2的modelDriven
今天做毕业设计,前台往后台赋值,习惯性的用了modelDriven.但是刚写完就奇怪它的机理是怎样的,它怎么知道我前台传的参是哪个Model的属性(之前用servlet都是手动),于是手贱的ctrl点 ...
- Struts2中ModelDriven的使用
它是Struts2种独有的一种接收用户输入的机制,想在项目中使用模型驱动 (ModelDriven)需要让Action实现com.opensymphony.xwork2.ModelDriven 接口, ...
- struts2中#,$,%的用法以及el,ognl表达式的用法
OGNL, JSTL, STRUTS2标签中符号#,$,%的用法示例 取Session中的值 <c:out value="${sessionScope.user.userId}&quo ...
- Struts(十六):通过CURD来学习Struts流程及ModelDriven的用法
背景: 从一个Member的增删改查,来了解Struts2的运行原理及学习ModelDriven拦截器.Preparable拦截器. 新建项目实现列表的展示及删除功能: web.xml <?xm ...
- Struts2 之 modelDriven & prepare 拦截器详解
struts2 ModelDriven & Prepareable 拦截器 前面对于 Struts2 的开发环境的搭建.配置文件以及 Struts2 的值栈都已经进行过叙述了!这次博文我们讲解 ...
- Struts2之ModelDriven和Preparable拦截器
首先struts.xml文件配置如下 默认拦截器设置为paramsPrepareParamsStack <package name="default" namespace=& ...
- Struts2之ModelDriven的使用
http://www.cnblogs.com/luoyanli/archive/2012/11/20/2778361.html 我们可以根据Action属性的不同将它分为两类:Field-Driven ...
随机推荐
- python3 yield表达式形式应用
我们已知: 生成器函数:函数体内包含有yield关键字,该函数执行的结果是生成器 yield的功能: 1.与return类似,都可以返回值,但不一样的地方在于yield返回多次值,而return只能返 ...
- 【反演复习计划】【bzoj4407】于神之怒加强版
#include<bits/stdc++.h> #define N 5000010 #define yql 1000000007 using namespace std; typedef ...
- [ 总结 ] 删除通过find查找到的文件
[root@cloud abc]# touch test{,,,} [root@cloud abc]# ls shadow test test1 test2 test3 test5 [root@clo ...
- 移动开发之css3实现背景渐变效果
前段时间由于手机项目需要实现一个背景渐变功能, 开始是想切个小背景图平铺下, 后来想到css3可以实现,如是用下面的代码就实现了. .sec_case_list li span{ backgro ...
- Node-sqlite3多字段插入数据问题
Node-sqlite3多字段插入数据问题 在npm官网上看到sqlite3的使用方法,就去尝试了一下,奈何关于多字段插入的API简介很少,直接上代码: 官网的示例如下: var sqlite3 = ...
- php(间接)调用nmap命令时的选项特殊点
使用php调用pythn-nmap时,发现无法正常执行扫描动作 将nmap命令直接写入php,由后者调用,发现仍然无法执行,提示需要添加“-Pn”选项 原来是: 正常情况下:nmap -n host ...
- Visual Studio Code更改语言
参数地址:Visual Studio Code 设置Display Language介绍 在Visual Studio Code中使用快捷键Ctrl + Shift + P可以打开命令行 在local ...
- FZU 2150 Fire Game 【两点BFS】
Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns) ...
- The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple -A Peak
Peak Time Limit: 1 Second Memory Limit: 65536 KB A sequence of integers is called a peak, if ...
- Annotation的语法和使用
http://blog.csdn.net/cdl2008sky/article/details/6265742 (1) .<context:component-scan base-package ...