• struts2 页面向Action传参方式


    1、基本属性注入

      我们可以直接将表单数据项传递给Action,而Action只需要提供基本的属性来接收参数即可,这种传参方式称为基本属性注入。例如

      jsp页面:

    <s:form method="post" action="/Login">
        <s:textfield name="username" label="用户名"/>
        <s:password name="password" label="密码"/>
        <s:submit></s:submit>
    </s:form>

      Action:

    package action;
    
    import com.opensymphony.xwork2.Action;
    import com.opensymphony.xwork2.ActionContext;
    
    import models.User;
    
    
    public class LoginAction {
    
        private String username;
        private String password;
        
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String execute(){
            //用户名或密码错误
            if(!"admin".equals(this.username) || !"123456".equals(this.password)){
                return Action.LOGIN;
            }
            //用户名和密码正确
            else{
                return Action.SUCCESS;
            }
        }
    }

    只需要在Action中提供username和password两个属性,并提供了setXXX()方法,就可以实现参数的自动传递,这里不需要成员变量的名称和参数名称一致,只需要setXXX()对于的属性名和参数名相同就行

    2、域模型注入

       如果表单上的数据项很多,我们可以将表单中的数据项封装成实体对象后传递给Action,而Action需要提供实体对象属性来接收参数,这种传参的方式称为域模型注入。

       如上面例子,可以先定义一个User实体类

    package models;
    
    public class User {
    
        private String username;
        private String password;
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
    }

    在Action中

    package action;
    
    import com.opensymphony.xwork2.Action;
    import com.opensymphony.xwork2.ActionContext;
    
    import models.User;
    
    
    public class LoginAction {
    
        private User user;
        public User getUser() {
            return user;
        }
        public void setUser(User user) {
            this.user = user;
        }
    
        public String execute(){
            //用户名或密码错误
            if(user==null || !"admin".equals(user.getUsername()) || !"123456".equals(user.getPassword())){
                return Action.LOGIN;
            }
            //用户名和密码正确
            else{
                return Action.SUCCESS;
            }
        }
    }

      

      jsp页面:

    <s:textfield name="user.username" label="用户名"/>
    <s:password name="user.password" label="密码"/>
    <s:submit></s:submit>

    3、模型驱动传参数(Model Driven)

    Action:

    package action;
    
    import com.opensymphony.xwork2.Action;
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ModelDriven;
    
    import models.User;
    
    
    public class LoginAction implements ModelDriven<User>{
    
        private User user=new User();
        
    
        public String login(){
            //用户名或密码错误
            if(user==null || !"admin".equals(user.getUsername()) || !"123456".equals(user.getPassword())){
                return Action.LOGIN;
            }
            //用户名和密码正确
            else{
                return Action.SUCCESS;
            }
        }
    
    
        public User getModel() {
            // TODO Auto-generated method stub
            return user;
        }
    }

    JSP页面

    <s:textfield name="username" label="用户名"/>
    <s:password name="password" label="密码"/>
    <s:submit></s:submit>

      

     

  • 相关阅读:
    MySQL基础语句【学习笔记】
    减一技术应用:生成排列与幂集
    Java实现动态规划法求解0/1背包问题
    LODOP中ADD_PRINT_TABLE、HTM、HTML表格自动分页测试
    LODOP设置判断后执行哪个
    Lodop删除语句Deleted只能内嵌设计维护可用
    Lodop、c-lodop注册与角色简短问答
    LODOP暂存、应用、复原 按钮的区别
    JS判断语句 注意多句时加大括号 回调函数LODOP兼顾写法
    LODOP、C-Lodop简短排查语句
  • 原文地址:https://www.cnblogs.com/caoyc/p/5582925.html
Copyright © 2020-2023  润新知