初学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是在用于表单所有字段都是一个域中的字段那种方式,别的,一般方式(即上面的方式)就已经足够了,而且足够灵活。