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>

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM