有了前幾篇的基礎,相信大家對于Struts2已經有了一個很不錯的認識,本篇我將為大家介紹一些關于Action接收參數的三種形式,以及簡單的表單驗證實現,下面進入正題,首先我們一起先來了解一下最基本的Action接收參數的形式,直接在我們的Action類中添加成員變量,這樣就可以完成Action接收參數的操作,具體內容詳見代碼展示:
這里我們以登錄驗證為例,進行代碼展示,首先是我們的Action類:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
/*** * 最基本的接收參數形式 * @author jho * http://localhost:8080/Struts3/index!login?name="123"&password="456" */ @SuppressWarnings ( "serial" ) public class User extends ActionSupport { private String name; private int pwd; public String getName() { return name; } public void setName(String name) { this .name = name; } public int getPwd() { return pwd; } public void setPwd( int pwd) { this .pwd = pwd; } public String login(){ System.out.println( "name=" +name+ " Pwd=" +pwd); if ( 123456 ==pwd){ return SUCCESS; } else { return ERROR; } } } |
下面我們一起來看一下Action的第二種接收參數的形式,通過User類對象來完成整個的參數接收,首先我們創建一個User類:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public class User { private String name; private String password; public String getName() { return name; } public void setName(String name) { this .name = name; } public String getPassword() { return password; } public void setPassword(String password) { this .password = password; } } |
然后通過User對象在Action中進行用戶提交參數的接收:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/*** * Dormain Model * @author jho * http://localhost:8080/Struts4/index!login?user.name="123"&user.password="456" */ @SuppressWarnings ( "serial" ) public class UserAction extends ActionSupport { private User user; public User getUser() { return user; } public void setUser(User user) { this .user = user; } public String login(){ System.out.println( "name=" +user.getName()+ " Pwd=" +user.getPassword()); return SUCCESS; } } |
最后是通過Struts的ModelDriven<User>來進行用戶參數的接收,第一步創建我的User類對象,第二部配置我們的Action:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
/*** * Model Driven * @author jho * http://localhost:8080/Struts5/index!login?name="123"&password="456" */ @SuppressWarnings ( "serial" ) public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user = new User(); public String login(){ System.out.println( "name=" +user.getName()+ " Pwd=" +user.getPassword()); return SUCCESS; } public User getModel() { return user; } } |
所謂ModelDriven,意思是直接把實體類當成頁面數據的收集對象。
對于簡單的表單驗證知識,就為大家介紹一下addFieldError()方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
@SuppressWarnings ( "serial" ) public class InputErrorFilter extends ActionSupport{ private String name; public String getName() { return name; } public void setName(String name) { this .name = name; } @Override public String execute() throws Exception { return SUCCESS; } public String login(){ System.out.println(name+ "" ); if (name!= null && name.equals( "hpu" )){ return SUCCESS; } else { this .addFieldError( "nameError" , "用戶名輸入有誤" ); this .addFieldError( "nameError" , "ul li形式輸出錯誤信息" ); return ERROR; } } } |
我們的錯誤處理頁面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<%@ page language= "java" import = "java.util.*" pageEncoding= "utf-8" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+ "://" +request.getServerName()+ ":" +request.getServerPort()+path+ "/" ; %> <% @taglib uri= "/struts-tags" prefix= "s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > <html> <head> <base href= "<%=basePath%>" rel= "external nofollow" > <title>My JSP 'error.jsp' starting page</title> <meta http-equiv= "pragma" content= "no-cache" > <meta http-equiv= "cache-control" content= "no-cache" > <meta http-equiv= "expires" content= "0" > <meta http-equiv= "keywords" content= "keyword1,keyword2,keyword3" > <meta http-equiv= "description" content= "This is my page" > <!-- <link rel= "stylesheet" type= "text/css" href= "styles.css" rel= "external nofollow" > --> </head> <body> 操作失敗 <br> 輸入參數:<s:text name= "name" /><br/> <s:fielderror fieldName= "nameError" theme= "simple" /><br/> <s:property value= "errors.nameError[0]" /><br/> <s:debug></s:debug> </body> </html> |
以上所述是小編給大家介紹的Struts2中Action三種接收參數形式與簡單的表單驗證功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:http://www.cnblogs.com/AndroidJotting/p/6516752.html