zoukankan      html  css  js  c++  java
  • 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>

      

     

  • 相关阅读:
    datagrid在MVC中的运用05-加入时间搜索条件,枚举填充下拉框
    datagrid在MVC中的运用04-同时添加搜索和操作区域
    datagrid在MVC中的运用03-选择单行或多行
    datagrid在MVC中的运用02-结合搜索
    datagrid在MVC中的运用01-基本属性并实现分页
    Object [object Object] has no method 'live'
    AutoMapper在MVC中的运用小结
    error CS0234: 命名空间“XXX”中不存在类型或命名空间名称“UserInfoVm”(是否缺少程序集引用?)
    《黄聪:手机移动站SEO优化教程》2、PC端和手机移动端SEO优化区别
    《黄聪:手机移动站SEO优化教程》1、为什么要做手机移动端网站
  • 原文地址:https://www.cnblogs.com/caoyc/p/5582925.html
Copyright © 2011-2022 走看看