Struts2创建项目7---ModelDriven

来源:互联网 发布:比特币挖矿 编程 编辑:程序博客网 时间:2024/06/17 01:06

预期的效果

这里写图片描述

使用id, 直接设置值

这里写图片描述

实际无法获取值

这里写图片描述

为什么:我们可以通过<s:debug/>查看CompoundRoot的情况,会发现root顶部存储的是MessageAction对象, 所以直接获取id, title, 是找不到的,需要通过msg对象获取

这里写图片描述

在addInput.jsp中将设置值改为msg.xx ,再次执行

这里写图片描述

但是,是哦那个msg.xx 感觉比较繁杂, 如果可以直接使用xx来设置值就好了,那么就是本节所要讲的ModelDriven, 实现ModelDriven接口, 重写getModel()方法

package com.chb.struts2Test.action;import com.chb.struts2Test.model.Message;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;public class MessageAction extends ActionSupport implements ModelDriven<Message>{    private static final long serialVersionUID = 1L;    //在MessageAction中不在传入所有属性, 使用Message对象封装    private Message msg;    public MessageAction(){    }    public MessageAction(Message msg) {        this.msg = msg;    }    public void setMsg(Message msg) {        this.msg = msg;    }    public Message getMsg() {        return msg;    }    public String addInput() {        return "success";    }    public String add() {        return "success";    }    @Override    public Message getModel() {        if (msg == null) {            msg = new Message();        }        return msg;    }   }

我们在来看CompoundRoot的情况,
我们回发现Message对象在CompoundRoot的顶部, 那么我们就可以直接获取id, 这就是ModelDriven的功能,将Action中的对象添加到CompoundRoot

这里写图片描述