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>

      

     

  • 相关阅读:
    自从学会了搭建开源网站,妈妈再也不担心我找不到web自动化学习环境啦!
    领导要我6点下班前创建1000个有效的手机号,现在5点半了!教你用random模块10分钟搞定!
    python:字符串 扩展分片:第三个限制值
    python字符串:索引和分片
    测试基础:测试用例设计策略
    测试基础:软件测试思维方式
    面试整理:python列表面试习题
    面试整理:linux
    测试的一些思考
    python ConfigParse模块中的方法
  • 原文地址:https://www.cnblogs.com/caoyc/p/5582925.html
Copyright © 2011-2022 走看看