初学WW,很好奇,不过也觉得有些地方不是很明白,比如ModelDriven。
下面一个例子:
input.jsp
html 代码
- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
- <%@ taglib prefix="ww" uri="/webwork" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Input User Profile</title>
- <style>
- body,td {
- font-size: 12px;
- font-family: simsun;
- }
- </style>
- </head>
- <body>
- <ww:form method="post" action="showUser.action">
- <ww:textfield name="user.name" label="名字" />
- <ww:textfield name="user.sex" label="性别" />
- <ww:textfield name="user.age" label="年龄" />
- <ww:submit value="提交" />
- </ww:form>
- </body>
- </html>
User.java
java 代码
- package ch04;
-
- public class User {
- private String name;
- private String sex;
- private int age;
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getName() {
- return name;
- }
-
- public void setSex(String sex) {
- this.sex = sex;
- }
-
- public String getSex() {
- return sex;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- public int getAge() {
- return age;
- }
- }
ShowUserAction.java
java 代码
- package ch04;
-
- import com.opensymphony.xwork.ActionSupport;
- import ch04.User;
-
- public class ShowUserAction extends ActionSupport {
- private static final long serialVersionUID = -6765769688518023696L;
-
- private User user;
-
- public void setUser(User user) {
- this.user = user;
- }
-
- public User getUser() {
- return user;
- }
-
- public void validate() {
- if (user.getName() == null || "".equals(user.getName())) {
- addFieldError("user.name", "用户名不能为空!!");
- }
- if (user.getSex() == null || "".equals(user.getSex()) || (!user.getSex().equals("man") && !user.getSex().equals("woman")) ){
- addFieldError("user.sex", "性别填写不正确!");
- }
- if (user.getAge() <= 0) {
- addFieldError("user.age", "年龄填写不正确!");
- }
- }
-
- public String execute() {
- return SUCCESS;
- }
-
- }
用上面的方式完全不用ModelDriven,而且可以同时填写多个model,由execute调用。
再说,modelDriven方式不赞成在execute时修改model的引用,修改了也没用-_-,总觉得这样是多余的。
个人认为modelDriven是在用于表单所有字段都是一个域中的字段那种方式,别的,一般方式(即上面的方式)就已经足够了,而且足够灵活。
分享到:
相关推荐
在实际应用中,ModelDriven和拦截器常常结合使用。当Action类实现ModelDriven接口时,只需要声明一个模型对象,Struts2会自动将请求参数绑定到该模型对象上。例如,如果你有一个User类,Action类可以这样实现: ```...
这篇博客文章可能详细探讨了如何在Struts2中使用ModelDriven接口来接收和处理请求参数。 ModelDriven接口允许开发者将一个对象绑定到Action上下文中,这个对象可以被用来存储和传递业务逻辑层的数据。当Action类...
本示例主要讲解了如何在Struts2中传递参数以及使用ModelDriven模式。首先,我们来逐一解析涉及的知识点。 1. **Struts2框架**:Struts2是Apache软件基金会的一个开源项目,它是基于MVC设计模式的Web应用框架,旨在...
通过使用ModelDriven拦截器,可以将冗余代码抽取出来,把操作一个一个散列的属性变为操作一个对象——在这里就是封装了业务信息的领域模型。 一、问题提出 在不使用ModelDriven和Preparable拦截器技术时,Action类...
在Struts2框架中,为了提高代码的可维护性和可读性,开发人员经常使用到`ModelDriven`和`Preparable`这两种拦截器。本文档旨在通过分析这两种拦截器的原理及其实际应用来帮助开发者更好地理解和掌握它们。 #### 二...
3. 测试用例:可能包括JUnit测试,验证Action类的业务逻辑是否正确执行。 4. 运行环境配置:可能有Web服务器的配置文件,如Tomcat的server.xml,以及项目结构说明。 5. 说明文档:可能有开发者编写的README文件,...
这个项目案例和视频教程主要针对初学者,旨在深入理解如何使用Struts2的ModelDriven机制来接收和传递参数。 ModelDriven接口是Struts2提供的一种设计模式,它的核心思想是将业务模型与Action类紧密结合。通过实现...
在本文中,我们将深入探讨如何使用Struts2的`ModelDriven`接口以及如何控制URL,以实现`struts2-rest-showcase-2.1.8.war`项目中的功能。 首先,`ModelDriven`接口是Struts2提供的一种设计模式,用于将Action类与...
标题与描述均提到了“IBM基于模型等项目开发ibm_modeldriven2”,这明确指向了IBM在系统工程领域的一项关键技术——模型驱动开发(Model-Driven Development,MDD)。MDD是一种软件工程方法论,其核心是通过创建、...
默认情况下,当使用了ModelDriven接口,Struts2会尝试直接序列化绑定的模型对象。但当配置了后,Struts2会将整个Action作为根对象进行序列化,而模型对象则是根对象下的一个属性。这样做可以确保Action中除了模型...
4. **灵活性**:ModelDriven模式允许你在Action中使用多个模型对象,只需在Action类中添加对应的方法即可。 **四、ModelDriven模式的注意事项** 1. **数据验证**:虽然ModelDriven模式简化了Action类,但数据验证...
Struts2 框架中,Action 组件可以通过多种方式接收参数,这些方式包括使用 Action 的属性、使用 DomainModel 和使用 ModelDriven。下面将详细介绍这些方法: 使用 Action 的属性接收参数 在 Struts2 中,可以使用 ...
例如,可以调整它们在拦截器栈中的位置,或者指定特定的Action是否使用这些拦截器。此外,还可以自定义ModelDriven接口的实现,以适应不同的模型对象,或者扩展ParamInput的逻辑以满足特定的输入处理需求。 总结来...
### 使用模型驱动(ModelDriven)方便从表单获取用户输入的值 #### 模型驱动(ModelDriven)概述 在Struts2框架中,模型驱动(ModelDriven)接口被设计用于简化前端表单与后端业务逻辑之间的数据传递过程。通过实现这个...
1. **使用通配符配置Action**: - 例子:`*" method="{1}" class="com.example.StudentAction">` - 这里的`student*`是一个通配符模式,匹配所有以`student`开头的Action。 - `{1}`表示通配符中第一个星号后的...
在这个例子中,可能讲解了如何创建Model对象,如何在Action中实现ModelDriven接口,以及如何在JSP页面中使用这些模型属性。 总之,Struts2提供了灵活的方式来接收和处理HTTP请求中的参数,这使得开发者能够根据项目...
在不使用ModelDriven模式的Action中,我们需要显式地声明和使用Person对象: ```java public class HelloWorldAction extends ActionSupport { private Person person; //... getter & setter for person public...
在Struts2中,你可以使用`ModelDriven`接口来实现表单数据的自动绑定。当你创建一个Action类并实现`ModelDriven`接口时,你需要定义一个模型对象,该对象将与表单字段进行绑定。例如,你可以创建一个名为`UserForm`...
JavaEE是一种广泛使用的服务器端开发框架,用于构建企业级应用程序。在JavaEE中,Struts是一个经典的MVC(模型-视图-控制器)框架,它极大地简化了Web应用的开发。本节我们将深入探讨Struts中的表单、ModelDriven...