码迷,mamicode.com
首页 > 其他好文 > 详细

struts2 页面向Action传参方式

时间:2016-06-14 10:10:06      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

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>

 

  

 

struts2 页面向Action传参方式

标签:

原文地址:http://www.cnblogs.com/caoyc/p/5582925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!