程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Struts2輸入校驗(一) validate方法-validateXxx方法

Struts2輸入校驗(一) validate方法-validateXxx方法

編輯:關於JAVA

這是一種編碼校驗的方法, 我重寫ActionSupport父類的validate方法來實現 .

Action執行時一定會執行validate方法, 若有不合格的輸入 就調用addFieldError ("age", "年領應在0-200之間");方法.

1 login.jsp

HTML標簽:

Html代碼

錯誤信息 :<s:fielderror ></s:fielderror>

<form action="login.action" method="post">

用戶名:<input type="text" name="username" value="${username}"/><br>

年 齡:<input type="text" name="age" value="${age} "/><br>

生 日:<input type="text" name="birthday" value="${birthday}"/><br>

點對象:<input type="text" name="point" value="${point} "/><br>

<input type="submit" value="提交"/>

</form>
struts2標簽

Html代碼

<s:form action="login">

<s:textfield name="username" label="用戶名 "></s:textfield>

<s:textfield name="age" label="年 齡 "></s:textfield>

<s:textfield name="birthday" label="生 日 "></s:textfield>

<s:textfield name="point" label="點對象 "></s:textfield>

<s:submit></s:submit>

</s:form>

2 LoginAction.java

Java代碼


package ssh.org.web;

import java.util.Date;

import java.util.List;

import ssh.org.util.Point;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport

{

/**

*

*/

private static final long serialVersionUID = 1L;

private String username;

private int age;

private Date birthday;

private List<String> aihao;

@Override

public String execute() throws Exception

{

return "success";

}

@Override

public void validate()

{

if (age < 0 || 200 < age)

{

addFieldError("age", "年領應在0-200之間");

}

}

}

 

看上面的validate()方法,很簡潔,因為少了類型轉換,這個工作由Struts2內建的類型轉換器把請 求參數轉換為所須要的類型.

3 結果

validateXxx() 方法

一個Action可以包含多個處理邏輯

Java代碼


public class UserAction extends ActionSupport
{
private static final long serialVersionUID = 1L;
private String username;
private int age;
private Date birthday;
private List<String> aihao;
public String addUser() throws Exception
{
//添加用戶
return "success";
}
public void validateAddUser()
{
if (null == username || "".equals(username))
{
addFieldError("username", "用戶名不能為空");
}
System.out.println("validateAddUser() 驗證方法 ");
}
public String getUserList()
{
//取得所有用戶
return "success";
}
public void validateGetUserList()
{
//驗證方法略...
System.out.println("validateAddUser() 驗證方法 ");
}
// --測試用
@Override
public String execute() throws Exception
{
return "success";
}
@Override
public void validate()
{
if (age < 0 || 200 < age)
{
addFieldError("age", "年領應在0-200之間");
}
System.out.println("~~~~~~基本~~~~~ ");
}
}

上面的就有三個處理業務的方法addUser(),getUserList(),execute()

addUser(),getUserList() 方法分別有 不同的驗證 方法:validateAddUser(),validateGetUserList() , 也就是validateXxx() 方法.

業務方法叫什麼, 驗證方法就叫validate+ 業務方法名(首字母大 寫)

這樣, 在執行某個 業務方法,就會執行與它同名的驗證方法,執行addUser()這前就會檢查有沒有validateAddUser()方法, 有就執行之.

其實有了addUser(),getUserList()這兩方法, execute()就可以不要, 但我為了說明一個多個validate方法執行的順序, 還是加上了.

不論執行addUser()還是getUserList()方法,validate()方法一定會執行, 這是我們不想要的, 有兩解決 方法:

1 不寫execute() , 也就不用寫validate()方法

2 寫execute(),把 validate() 改名為validateExecute().

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved