`
juggler
  • 浏览: 166014 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论

是否应该用ModelDriven?

阅读更多

初学WW,很好奇,不过也觉得有些地方不是很明白,比如ModelDriven。

下面一个例子:

input.jsp

html 代码
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
  2. <%@ taglib prefix="ww" uri="/webwork" %>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title>Input User Profile</title>  
  8. <style>  
  9.     body,td {   
  10.         font-size: 12px;   
  11.         font-family: simsun;   
  12.     }   
  13. </style>  
  14. </head>  
  15. <body>  
  16. <ww:form method="post" action="showUser.action">  
  17.     <ww:textfield name="user.name" label="名字" />  
  18.     <ww:textfield name="user.sex" label="性别" />  
  19.     <ww:textfield name="user.age" label="年龄" />  
  20.     <ww:submit value="提交" />  
  21. </ww:form>  
  22. </body>  
  23. </html>  

User.java

java 代码
  1. package ch04;   
  2.   
  3. public class User {   
  4.     private String name;   
  5.     private String sex;   
  6.     private int age;   
  7.        
  8.     public void setName(String name) {   
  9.         this.name = name;   
  10.     }   
  11.        
  12.     public String getName() {   
  13.         return name;   
  14.     }   
  15.        
  16.     public void setSex(String sex) {   
  17.         this.sex = sex;   
  18.     }   
  19.        
  20.     public String getSex() {   
  21.         return sex;   
  22.     }   
  23.        
  24.     public void setAge(int age) {   
  25.         this.age = age;   
  26.     }   
  27.        
  28.     public int getAge() {   
  29.         return age;   
  30.     }   
  31. }  

ShowUserAction.java

java 代码
  1. package ch04;   
  2.   
  3. import com.opensymphony.xwork.ActionSupport;   
  4. import ch04.User;   
  5.   
  6. public class ShowUserAction extends ActionSupport {   
  7.     private static final long serialVersionUID = -6765769688518023696L;   
  8.        
  9.     private User user;   
  10.        
  11.     public void setUser(User user) {   
  12.         this.user = user;   
  13.     }   
  14.        
  15.     public User getUser() {   
  16.         return user;   
  17.     }   
  18.        
  19.     public void validate() {   
  20.         if (user.getName() == null || "".equals(user.getName())) {   
  21.             addFieldError("user.name""用户名不能为空!!");   
  22.         }   
  23.         if (user.getSex() == null || "".equals(user.getSex()) || (!user.getSex().equals("man") && !user.getSex().equals("woman")) ){   
  24.             addFieldError("user.sex""性别填写不正确!");   
  25.         }   
  26.         if (user.getAge() <= 0) {   
  27.             addFieldError("user.age""年龄填写不正确!");   
  28.         }   
  29.     }   
  30.        
  31.     public String execute() {   
  32.         return SUCCESS;   
  33.     }   
  34.   
  35. }   

用上面的方式完全不用ModelDriven,而且可以同时填写多个model,由execute调用。

再说,modelDriven方式不赞成在execute时修改model的引用,修改了也没用-_-,总觉得这样是多余的。

个人认为modelDriven是在用于表单所有字段都是一个域中的字段那种方式,别的,一般方式(即上面的方式)就已经足够了,而且足够灵活。

分享到:
评论
2 楼 懒萝卜 2010-02-05  
我也经常使用楼主的做法,
ModelDriven只有听说过,没有使用过。
1 楼 zhengyutong 2009-09-24  
很赞同楼主的说法。没有必要继承ModelDriven接口来实现所谓的“模型驱动”。关于ModelDriven有着各种说法,不过楼主跟我的想法一样。

相关推荐

Global site tag (gtag.js) - Google Analytics