12.1.4 WebWork类型转换给你带来了什么
让我们回想一下,例程12-2里execute() 方法75%的代码都是用来为真正要做的工作做准备的。现在让我们看看一种更好的方法吧。让我们把CreateUser action改写一下,但是这次我们没有为准备数据花费任何时间。改写后的action代码显示在例程12-4中。
例程12-4 一个利用了自动类型转换的action
package org.hibernate.auction.web.actions.users;
import com.opensymphony.xwork.ActionSupport;
import org.hibernate.auction.dao.UserDAO;
import org.hibernate.auction.dao.UserDAOAware;
import org.hibernate.auction.model.User;
import org.hibernate.auction.model.Email;
import java.text.DateFormat;
import java.util.Date;
public class CreateUser extends ActionSupport
implements UserDAOAware {
{
User user;
UserDAO userDAO;
public String execute() throws Exception {
userDAO.makePersistent(user);
return SUCCESS;
}
}
// setter 和 getter方法
...
}
你可以看到,在execute() 方法里只有两行代码,并且它们都是必需的。其他的行哪里去了?之前拥有的字段都怎么样了?我们将在12.3节讨论这是怎么发生的。眼下,记住使用纵向模式访问字段往往会减少重复的代码,并且让WebWork框架为你做尽可能多的事情。
现在让我们看看例程12-5中的成功页面,并和前面展示过的例程12-3比较一下。
例程12-5 一个使用了类型转换的显示成功结果的JSP页面
<%@ taglib uri="webwork" prefix="ww" %>
<html>
<head>
<title>New User Created</title>
</head>
<body>
A new user was created!
<p/>
Username: <ww:property value="user.username"/><br/>
Password: [Not shown]<br/>
First name: <ww:property value="user.firstName"/><br/>
Last name: <ww:property value="user.lastName"/><br/>
Age: <ww:property value="user.age"/><br/>
Email: <ww:property value="user.email"/><br/>
Birth Date: <ww:property value="user.birthDate"/><br/>
</body>
</html>
注意,你不再需要为日期类型和其他数据类型做不同的处理。使用适当的类型转换,无须担心toString() 返回LONG格式的字符串。这是怎么回事?为了找出真相,让我们看看如何配置和建立你自己的类型转换器。







