• 在Stuts2中使用ModelDriven action


      在Struts2中,提供了另外一种直接使用领域对象的方式,那就是让action实现com.opensymphony.xwork2.ModelDriven接口。ModelDriven让你可以直接操作应用程序中的领域对象,允许你在Web层和业务逻辑层使用相同的对象。

      ModelDiven接口中只有一个方法,如下

      public T getModel();

      该方法返回一个接受用户输入数据的对象模型。在页面中,这个模型对象中的属性可以直接通过对象名来访问,嗯不需要使用user.name来访问,在action类中,也不需要为这个对象提供getter和setter方法。

      代码如下:

    package action;
    
    import com.opensymphony.xwork2.Action;
    import com.opensymphony.xwork2.ModelDriven;
    import entity.User;
    
    
    public class Model implements Action,ModelDriven<User> {
        private User user=new User();
        @Override
        public User getModel() {
            return user;
        }
    
        @Override
        public String execute() throws Exception {
            return SUCCESS;
        }
    }

    实体类:

    package entity;
    public class User {
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }

      首先还是老样子,创建一个login.jsp,登陆后经过Stuts2的拦截器,找到并进入自定义的实现了action接口和ModelDriven接口的Model类

    返回SUCCESS,在stuts.xml中定向到success.jsp页面。

    在success.jsp页面中,我们只需要如下定义,就可以实现原有功能

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@taglib prefix="s" uri="/struts-tags" %>
    <%@ page isELIgnored="false" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <s:debug></s:debug>
    <s:fielderror></s:fielderror>
    Hello   <s:property value="name"/>
    <s:iterator value="list" id="str">
        <s:property value="str"/>
    </s:iterator>
    
    </body>
    </html>

    登陆后的效果如下

    那么什么时候应该使用领域对象,什么时候应该实现ModelDriven接口呢?这两种方式其实实际上没有本质的差别,对于大多数的应用,使用任何一种方式都可以。

  • 相关阅读:
    careercup-C和C++ 13.6
    C++中名字隐藏,名字查找优先于类型检查
    careercup-C和C++ 13.5
    careercup-C和C++ 13.4
    careercup-C和C++ 13.3
    careercup-C和C++ 13.2
    careercup-C和C++
    careercup-排序和查找 11.7
    RMAN Catalog创建、配置和管理
    Linux一块网卡添加多个IP地址
  • 原文地址:https://www.cnblogs.com/yangsongxiao/p/6481020.html
Copyright © 2020-2023  润新知