论坛首页 入门讨论版 Webwork

webwork的action实现了ModelDriven接口,但是在action中域对象得不到值

浏览 1096 次
该帖已经被评为新手帖
作者 正文
最后更新时间:2007-10-09
我使用webwork的框架实现了ModelDriven接口,但是在action中域对象得不到值,如下例中的user为空。

action的代码如下:
package action;

import com.opensymphony.xwork.ActionSupport;
import com.opensymphony.xwork.ModelDriven;
import dao.UserDAO;
import dto.User;
/**
* 测试ModelDriven接口(但是没跑通,不能从页面上获得对象的值)
* @author Administrator
*
*/
public class UpdateUser extends ActionSupport implements UserDAOAware,ModelDriven {

UserDAO userDAO;

private User user=new User();

public String execute() throws Exception {
userDAO.makePersistent(user);
System.out.println(user.getFirstName());
return SUCCESS;
}

public String doDefault() throws Exception {
return INPUT;
}

public Object getModel() {
System.out.println("model:");
return user;
}

public void setUserDAO(UserDAO dao) {
// TODO Auto-generated method stub
this.userDAO = dao;
}

}

jsp的代码如下:

<%@ taglib prefix="ww" uri="webwork" %>
<html>
<head>
<title>Update Profile</title>
</head>
<body>
<ww:form action="updateUser" method="post">
<ww:textfield label="%{getText('firstName')}" name="firstName"/>
<ww:textfield label="%{getText('lastName')}" name="lastName"/>
<ww:textfield label="%{getText('email')}" name="email"/>


<ww:submit value="%{getText('updateUser')}"/>
</ww:form>
</body>
</html>


xwork.xml的代码如下:

<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
    <include file="webwork-default.xml"/>
    <package name="default" extends="webwork-default">
        <result-types>
            <result-type name="debug" class="result.example1.DebugResult" default="true"/>
        </result-types>
        <default-interceptor-ref name="completeStack"/>
       
        <action name="updateUser" class="action.UpdateUser">
            <result name="success">updateProfile.jsp</result>
            <result name="input">updateProfile.jsp</result>
        </action>
       
    </package>
</xwork>
   
最后更新时间:2007-11-09
少了一个“model-driven”拦截器
   
0 请登录后投票
最后更新时间:2007-11-09
completeStack中已经包含了model-driven拦截器,页面中使用时应该是:
<ww:textfield label="%{getText('firstName')}" name="model.firstName"/>
   
0 请登录后投票
最后更新时间:2007-11-21
一般ModelDriven接口要放在第一个的
   
0 请登录后投票
最后更新时间:2008-07-06
非要这样做吧,不用实现ModelDriven也可以吧
   
0 请登录后投票
论坛首页 入门讨论版 Webwork

跳转论坛:
JavaEye推荐