struts標簽 form表單標簽 Action:請求地址。直接寫動作名稱,不用寫contextPath method:請求方式,預設是post請求,可以不用寫 enctype:靜音編碼的MIME類型 Struts2 表單驗證 服務端Action驗證 struts自帶表單欄位驗證 第一種:重寫val ...
struts標簽
form表單標簽
Action:請求地址。直接寫動作名稱,不用寫contextPath
<s:form action="/user/register.action">
method:請求方式,預設是post請求,可以不用寫
enctype:靜音編碼的MIME類型
Struts2-表單驗證-服務端Action驗證
struts自帶表單欄位驗證
第一種:重寫validate方法,如果數據不對,可以往FieldError添加錯誤信息
public void validate() {
//判斷用戶名是否為null
if(StringUtils.isEmpty(user.getUsername())) {
addFieldError("username","用戶名不能為null");
}
}
//一旦FiledError有數據就不會執行register方法
public String register(){
System.out.println("register....");
System.out.println(user);
return NONE;
}
註意:表單一定要與struts標簽結合使用表單驗證才會有效:
在進行表單提交的時候會優先調用validate方法,如果FieldError有錯誤信息就不會執行其他方法。對於action來說validate方法是全局的
package com.gyf.web.action;
import com.gyf.service.IUserService;
import com.gyf.service.impl.UserServiceImpl;
import org.apache.commons.lang3.StringUtils;
import com.gyf.model.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class UserAction extends ActionSupport implements ModelDriven<User> {
private User user = new User();
@Override
public User getModel() {
return user;
}
public String register(){
System.out.println("register....");
System.out.println(user);
return NONE;
}
public String list() {
return "list";
}
@Override
public void validate() {
System.out.println(user.getUsername());//直接通過action訪問list時列印為null
//判斷用戶名是否為null
if(StringUtils.isEmpty(user.getUsername())) {
addFieldError("username","用戶名不能為null");
}
}
}
現在通過action來訪問jsp頁面出錯,因為FieldError有數據,所以不執行list方法
現在使用註解的方式,使用list方法時來跳過執行validate方法
@SkipValidation
public String list() {
return "list";
}
跳過了validate方法的執行,可以正常訪問list,證明瞭validate方法時具有全局性的
struts2-表單驗證-xml聲明式驗證
全局聲明方式
1.在action包中聲明UserAction-validation.xml文件格式類名-U-validation.xml
2.這種方式配置是全局配置,所有action的方法都會攔截驗證
3.如果其他方法不想驗證,可配置@SkipValidation註解
4.dtd約束可以在xwork-core的jar包中找
局部聲明方式
在action包中聲明UserAction-register-validation.xml文件,聲明格式Action 類名-方法名-validation.xml
Struts2的國際化
軟體的國際化:要使他能同時應對世界不同地區和國家的訪問。並針對不同地區和國家的訪問,提供相應的,符合來訪者閱讀習慣的頁面或數據
創建一個消息資源包
一個資源包由多個文件組成,這些文件名都有命名規範:主要文件名_語言代碼_國家代碼.properties
語言代碼和國家代碼:有iso規定的
當文件只有主要文件名.properties時,表明他是預設資源包。瀏覽器會根據不同的語言環境找對應語言環境的資源包
當沒有時,找預設的
每個資源包的內容都由相同的key和對應語言環境value組成
讀取國際化資源文件
package com.gyf.test;
import java.util.Locale;
import java.util.ResourceBundle;
import org.junit.Test;
public class I18NTest {
@Test
public void test1() {
//預設讀取的是中文
//ResourceBundle rb = ResourceBundle.getBundle("resources.message");//包名加文件名
//指定讀取某個國家
ResourceBundle rb = ResourceBundle.getBundle("resources.message",Locale.US);
System.out.println(rb.getString("login.username"));
System.out.println(rb.getString("login.password"));
System.out.println(rb.getString("login.submit"));
}
}
Struts的國際化
配置資源包
讀取資源包