1. 程式人生 > >Struts2 不同的欄位如何使用同一個相應訊息和驗證規則

Struts2 不同的欄位如何使用同一個相應訊息和驗證規則

jsp頁面如下

<body>
  <a href="good.action?request_locale=zh_CN">中文</a>
  <a href="good.action?request_locale=en_US">英文</a>
   <s:form action="good.action">
   <s:textfield name="goodnum" label="goodsnum"></s:textfield>
   <s:textfield name="goodprice" label="goodsprice"></s:textfield>
   <s:submit></s:submit>
   </s:form>
  </body>

填好表單之後,點擊發送請求,跳轉到後臺的struts.xml檔案

<action name="good" class="cn.com.app.Goods">
			<result>/success.jsp</result>
			<result name="input">/demos.jsp</result>
		</action>

通過請求的地址,找到對應的Action類

package cn.com.app;
import com.opensymphony.xwork2.ActionSupport;
public class Goods extends ActionSupport{
/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
/*author:命運的信徒
 * date:2018/12/18
 * arm:相同的驗證規則使用同一條相應訊息
 */
	private int goodnum;
	private int goodprice;
	//1.根據請求找到struts.xml檔案
	//2.根據請求的地址找到Action類
	//3.第一步,params攔截器賦值
	//4.執行到validation攔截器,欄位的驗證
	public int getGoodnum() {
		return goodnum;
	}
	public void setGoodnum(int goodnum) {
		this.goodnum = goodnum;
	}
	public int getGoodprice() {
		return goodprice;
	}
	public void setGoodprice(int goodprice) {
		this.goodprice = goodprice;
	}
	
}

通過欄位驗證攔截器 找到Action的配置檔案



<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.2//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
	<!-- 針對goodnum goodprice屬性進行驗證 -->
	<field name="goodprice">
		<!-- -欄位範圍內 -->
		<field-validator type="int">
			<param name="min">20</param>
			<param name="max">50</param>
			<message key="error_age"></message>
		</field-validator>
	</field>
	<field name="goodnum">
		<!-- -欄位範圍內 -->
		<field-validator type="int">
			<param name="min">10</param>
			<param name="max">20</param>
			<message key="error_age"></message>
		</field-validator>
	</field>
</validators>







錯誤提示訊息國際化顯示,就是雖然顯示的英文,但是在中國地區是不可能還顯示英文的

username=\u7528\u6237\u540D
password=\u5BC6\u7801
submit=\u63D0\u4EA4
time=\u65F6\u95F4\:{0}
times=\u7B2C\u4E8C\u65F6\u95F4\:${dd}
error_age=*${getText(fieldName)} need to be between ${min} and ${max}
goodprice=\u4EF7\u683C
goodnum=\u6570\u91CF

效果如下

點選中文如下

點選英文如下