Struts2 輸入校驗(Action中使用國際化資原始檔、校驗器校驗)
Action類獲得國際化資原始檔中的資訊,主要使用ActionSupport類的getText方法進行。
ActionSupport類過載了很多getText方法,常用的有如下幾個:
1、getText(String aTextName):引數aTextName是資原始檔中的key值,可以返回對應的value值。
2、getText(String key,String[] args):引數key是資原始檔中的key值,args可以用來給資原始檔中的引數傳值。
messageResource_en_US.properties
#The Text register.info=Please input your register Info: #The Form custname.label=Input your name pwd.label=Input your password age.label=Input your age address.label=Input your address register.button=Register New Customer #error message custname.null=Input your custname,please. pwd.null=Input your password,please. custname.exit=Sorry,the custname already existed. #action message register.successful=Register successfully,login pls.
messageResource_zh_CN.properties
#The Text register.info=\u8bf7\u8f93\u5165\u60a8\u7684\u6ce8\u518c\u4fe1\u606f\uff1a #The Form custname.label=\u8f93\u5165\u7528\u6237\u540d\uff1a pwd.label=\u8f93\u5165\u5bc6\u7801\uff1a age.label=\u8f93\u5165\u5e74\u9f84\uff1a address.label=\u8f93\u5165\u5730\u5740 register.button=\u6ce8\u518c\u65b0\u7528\u6237 #error message custname.null=\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a\u3002 pwd.null=\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a\u3002 custname.exist=\u7528\u6237\u540d\u5df2\u5b58\u5728\uff0c\u8bf7\u7528\u5176\u4ed6\u7528\u6237\u540d\u6ce8\u518c\u3002 #action message register.successful=\u6ce8\u518c\u6210\u529f\uff0c\u8bf7\u767b\u5f55\u3002
修改RegisterAction
執行後顯示為資原始檔中配置的相關資訊。public String register() { CustomerServiceImpl cs = new CustomerServiceImpl(); cs.setDao(new CustomerDAOImpl()); try{ cs.register(cust); this.addActionMessage(this.getText("register.successful")); return "regsuccess"; }catch (RegisterException e) { this.addActionError(this.getText("custname.exist")); e.printStackTrace(); return "regfail"; } } @Override public void validate(){ String custname=cust.getCustname(); String pwd = cust.getPwd(); if(custname==null||custname.equals("")){ this.addFieldError("custname", this.getText("custname.null")); } if(pwd==null||pwd.equals("")){ this.addFieldError("pwd", this.getText("pwd.null")); } }
校驗器校驗
Action對輸入進行校驗,不僅可以使用前面章節學習的手工編碼方式,還可以呼叫API 中提供的校驗器校驗。
下面列舉使用校驗器進行校驗的具體步驟:
1、Action類繼承ActionSupport類,但是不需要覆蓋validate方法。
2、在Action類所在包中建立“Action類名-validation.xml”形式的檔案。
在action包下配置RegisterAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<field name="custname">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="custname.null"></message>
</field-validator>
</field>
<field name="pwd">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="pwd.null"></message>
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<param name="min">18</param>
<param name="max">60</param>
<message key="age.int"></message>
</field-validator>
</field>
<field name="address">
<field-validator type="email">
<message key="address.email"></message>
</field-validator>
</field>
</validators>
上述程式碼中,
<field name="">表示對指定name的域進行校驗。
<field-validator type="">表示使用type指定的名字在的校驗器進行校驗。
在資原始檔中天劍age.int以及address.email鍵值,以定義錯誤資訊
#The Text
register.info=\u8bf7\u8f93\u5165\u60a8\u7684\u6ce8\u518c\u4fe1\u606f\uff1a
#The Form
custname.label=\u8f93\u5165\u7528\u6237\u540d\uff1a
pwd.label=\u8f93\u5165\u5bc6\u7801\uff1a
age.label=\u8f93\u5165\u5e74\u9f84\uff1a
address.label=\u8f93\u5165\u5730\u5740
register.button=\u6ce8\u518c\u65b0\u7528\u6237
#error message
custname.null=\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a\u3002
pwd.null=\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a\u3002
custname.exist=\u7528\u6237\u540d\u5df2\u5b58\u5728\uff0c\u8bf7\u7528\u5176\u4ed6\u7528\u6237\u540d\u6ce8\u518c\u3002
#action message
register.successful=\u6ce8\u518c\u6210\u529f\uff0c\u8bf7\u767b\u5f55\u3002
#register message
age.int=\u5e74\u9f84\u5fc5\u987b\u5728${min}\u548c${max}\u4e4b\u95f4
address.email=\u5730\u5740\u5fc5\u987b\u662f\u4e00\u4e2a\u6709\u6548\u7684email\u5730\u5740\u3002
修改RegisterAction.java
package action;
import service.CustomerServiceImpl;
import vo.Customer;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import dao.Impl.CustomerDAOImpl;
import exception.RegisterException;
public class RegisterAction extends ActionSupport implements ModelDriven<Customer>{
private Customer cust = new Customer();
public String register(){
CustomerServiceImpl cs = new CustomerServiceImpl();
cs.setDao(new CustomerDAOImpl());
try{
cs.register(cust);
this.addActionMessage(this.getText("register.successful"));
return"regsuccess";
}catch(RegisterException e) {
this.addActionError(this.getText("custname.exit"));
e.printStackTrace();
return "regfail";
}
}
/* @Override
public void validate(){
String custname=cust.getCustname();
String pwd = cust.getPwd();
if(custname==null||custname.equals("")){
// this.addFieldError("custname", "Pls input your name.");
}
if(pwd==null||pwd.equals("")){
// this.addFieldError("pwd", "Pls input your password.");
}
} */
@Override
public Customer getModel() {
return cust;
}
}
型別轉換
請求引數的型別都是String型別,而在實際應用中,卻往往需要將請求引數轉換成其他型別,
如int、double、List等API中的型別,或者其他自定義的型別。
Struts2框架的內建型別轉換有:
1、基本資料型別:int、boolean、double等,包括基本型別對應的包裝器型別,如Integer、Boolean、Double等。
2、日期型別
3、Collection集合型別。
4、Set集合型別。
5、陣列型別。
只要Action類繼承了ActionSupport類,則內建的型別轉換器將預設生效。
例:
當註冊年齡輸入字串時,會有預設的校驗錯誤資訊輸出:
如果需要修改預設的型別轉換校驗資訊,則只要在Action類的包中宣告區域性屬性檔案即可,
名字為“Action類名.properties”
invalid.fieldvalue.age=年齡必須是數字
當定義了局部屬性檔案後,校驗失敗資訊將被修改,不再使用預設的校驗資訊,而顯示屬性檔案中定義的校驗資訊。
相關推薦
Struts2 輸入校驗(Action中使用國際化資原始檔、校驗器校驗)
Action類獲得國際化資原始檔中的資訊,主要使用ActionSupport類的getText方法進行。 ActionSupport類過載了很多getText方法,常用的有如下幾個: 1、getText(String aTextName):引數aTextName是資原始檔中
Python教程補充內容(函式中接收元組、列表和lambda的用法)——簡明python教程學習筆記
本文大量內容來源於沈老師的簡明python教程,其中夾雜部分個人的理解如有偏頗之處還望海涵。 一. 在函式中接收元組和列表 \quad當要使函式接收元組或字典形式的引數的時候,有一種特殊的方法,它分別使用*和**字首。 這種方法在函式需要獲取可變數量的引數的
Struts2輸入校驗
exp cdata tin .get xwork scheme field -1 rac regist.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%
Struts2輸入校驗之validate輸入校驗方式
一.在Web系統專案中有大量的檢視頁面需要使用者自行輸入很多資料。這些資料的型別有很多種。為了防止某些客戶的惡意輸入以及對Web專案的惡意破壞,必須引入輸入校驗,像Windows作業系統的防火牆一樣把一些垃圾資料過濾掉,擋在Web系統之外。接下來就來介紹一下validate
Struts2 輸入校驗
一、Struts2輸入校驗介紹 Struts2的輸入校驗和型別轉換都是對請求引數進行處理。 輸入校驗顧名思義就是請求引數是否能夠滿足一定的要求; 客戶端校驗&伺服器端校驗 客戶端校驗是指在瀏覽器這端通過Javascript進
Struts2異常處理之在Action中捕獲異常
Struts為我們提供了一套異常處理機制。通常的做法是在jsp頁面中獲取並輸出異常資訊。 但是,一些開發情景中,也會有這樣一種情況,某Action丟擲異常之後,並不想跳轉到異常頁面,而是想把這個異常資訊傳到另一個Action中來處理。下面就為大家介紹這兩種異常處理方
struts2 升級2.3.35 action中方法無法正常對映
內部專案,使用了maven,struts2則是使用了它的零配置特性(使用註解或預設約定) 1、maven中定義版本常量 <struts2.version>2.3.35</struts2.version> 2、struts2關鍵依賴相關jar內容(好
caffe中的batchNorm層(caffe 中為什麼bn層要和scale層一起使用)
caffe中的batchNorm層 連結: http://blog.csdn.net/wfei101/article/details/78449680 caffe 中為什麼bn層要和scale層一起使用 這個問題首先你要理解batchnormal是做什麼的。它其實
Struts2 通過超連結動態載入國際化資原始檔
1.關鍵在於知道struts2框架是如何確定local物件的! 2.可以通過i18n攔截器知道 具體的原理可以上51cto學院http://edu.51cto.com/center/course/lesson/index?id=26432 第36、Struts2通過超連結動態載入國際
JAVA中&&和&、||和|(短路與和邏輯與、短路或和邏輯或)的區別
問題一: JAVA中&&和&、||和|(短路與和邏輯與、短路或和邏輯或)的區別? 首先名稱是不同的 &&邏輯與 ||邏輯或 它們都是邏輯運算子 & 按位與 | 按位或 它們都是位運算子 if(a==1&&b==2) 這是說既要滿足a=1也要
webpack4系列教程(四):處理專案中的資原始檔(一)
傳送門: webpack4系列教程(一):初識webpack webpack4系列教程(二):建立專案,打包第一個JS檔案 webpack4系列教程(三):自動生成專案中的HTML檔案 1. Loader的使用 之前的博文已經介紹了Loader的
springmvc學習筆記(13)——國際化資原始檔
為什麼要配置國際
Android 比對國際化資原始檔中的翻譯缺失
因為app要做英文,繁體,中文,目前三種翻譯。然後目前還在用eclipse開發,導致有的時候編譯器並沒有提示哪些有缺失翻譯。 又經常新增。導致有的欄位可能有漏掉。不僅僅是研發會漏掉,也有可能是翻譯人員會漏掉。所以利用閒暇時間,打了個jar包。 目前可以比
關於js事件物件(DOM中的事件物件、IE中的事件物件、跨瀏覽器的事件物件)的詳解
在觸發DOM上的某個事件時,會產生一個事件物件event,這個物件中包含著所有與事件有關的資訊。包括導致事件的元素、事件的型別以及其他與特定事件相關的資訊。例如,滑鼠操作導致的事件物件中,會包含滑鼠位置的資訊,而鍵盤操作導致的事件物件中,會包含與按下的鍵有關的資訊。所有瀏覽器
struts2配置包範圍國際化資原始檔--包範圍
第一步: 目地:在一個大型應用中,整個應用有大量的內容需要國際化,如果我們把國際化的內容都放在全域性資源屬性檔案中,顯然會顯得資原始檔變得過於龐大,臃腫,不便於維護,這個時候針對不同模組,使用包的範圍來組織國際化檔案就顯得特別重要 配置包範圍資原始檔,其實十分簡單! 在包目
android應用開發過程中更換資原始檔不重新整理(顯示舊資原始檔)問題
問題描述: 我們在開發android app專案的時候,經常會遇到需求更改和UI更改的情況,這樣我們就需要將已經寫好的介面中的元素換掉,例如將介面中的背景圖或者某個圖片換掉,這時,問題
SSH框架/JSP Servlet 從Action中傳遞資料到JSP頁面
使用 ActionContext進行傳值: 例子: public String login({ if(this.userService.loginUser(user)==null||this.userService.loginUser(user)
菜鳥學Python Day1.4(導入模塊Import、用戶交互Raw_input)
python導入模塊 1.什麽是模塊? 2.導入模塊 Import moduleName (自帶200多個模塊,第三方模塊上千) Python標準庫 如下:導入模塊os.system內的的df,查看內存 查看模塊os可以導入很多方法os. tab健
深入jar包:從jar包中讀取資原始檔getResourceAsStream
一、背景 我們常常在程式碼中讀取一些資原始檔(比如圖片,音樂,文字等等)。 在單獨執行的時候這些簡單的處理當然不會有問題。但是,如果我們把程式碼打成一個jar包以後,即使將資原始檔一併打包,這些東西也找不出來了。 myproject |___src |___edu.hxrai
ServletContext讀取web中的資原始檔
servletcontext類字面上的意思是servlet是上下文,但是實際上就是在一個web專案裡面就只有一個servlet,所獲取到的這個類的物件都是隻有一個的; 他的方法特別多,今天只介紹如何獲取資原始檔;