1. 程式人生 > >Struts2中對資料簡單的驗證和property標籤的用法

Struts2中對資料簡單的驗證和property標籤的用法

使用addFieldError方法和s:fieldError標籤簡單處理資料校驗

場景:對一個使用者名稱進行驗證,如果使用者名稱不合法,則顯示給客戶端檢視資訊。

URL請求地址:

http://localhost:8080/Struts2_SimpleDataValiation/user/user!add?name=a

 訪問的Struts2配置,namespace="/user",action的name="user",Action所執行的方法method="add"並且傳入了一個引數name=a

配置檔案如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <constant name="struts.devMode" value="true" />
    <package name="user" extends="struts-default" namespace="/user">
        <action name="user" class="com.chongqing.action.UserAction">
            <result>/user_add_success.jsp</result>
            <result name="error">/user_add_error.jsp</result>
        </action>
    </package>
</struts>

根據配置檔案可以得知action所對應的類為com.chognqing.action.UserAction,並且具有兩個結果集(success和error).程式碼如下:

package com.chongqing.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
	private String name;
	
	public String add() {
		if(name == null || !name.equals("admin")) {
			//驗證錯誤,返回錯誤資訊,addFieldError中同一個name可以新增兩個不同的字串
			this.addFieldError("name", "name is error");
			this.addFieldError("name", "name is too long");
			return ERROR;
		} 
		return SUCCESS;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}	
}

根據Action類程式碼,可以看到Action是利用Action的成員屬性(name)來接受引數值,並且使用this.addFieldError()方法新增錯誤資訊,以便前臺可以訪問到。

this.addFieldError(name, errorMessage);

注:此方法是使用繼承了ActionSupport父類的
     name:可以是類的屬性名稱,但一般建議使用哪個成員屬性出錯,就用哪個
     errorMessage:新增的資訊

在客戶端獲取這些資訊,如下:

<body>
	User Add Error!
	<s:fielderror fieldName="name" theme="simple"/>
	<br />
	<s:property value="errors.name[0]"/>
	<s:debug></s:debug>
</body>

注:使用<s:fielderror>標籤,需要使用<%@taglib%>命令引用Struts2的標籤庫如下:

<%@taglib uri="/struts-tags" prefix="s" %>

1、<s:fielderror>標籤:獲取使用addFieldError()方法新增的資訊。

FiledName:指定資訊的名稱。
Theme: 指定顯示的主題。
注:使用此標籤獲取的錯誤資訊,Struts強制添加了css的修飾。生成的HTML程式碼如下(不常用):

<!--Class="errorMessage"是Struts2已經設定好的一個css了,這個方式不方便我們自定義樣式-->
<ul class="errorMessage">
	<li><span>name is error</span></li>
	<li><span>name is too long</span></li>
</ul>

2、<s:debug></s:debug>:這是標籤的寫方式,會在頁面上產生一個連結,點選後顯示如下(Struts2生成的一些資訊):

3、<s:property>標籤:獲取值堆疊屬性所對應的值。

<s:property value="errors.name"/>

注:value:指定值堆疊的屬性名及資料下標等。

例如:value="a":獲取Action類的成員屬性a的值
         value="errors":獲取errors屬性的物件Map值
         value="errors.name":獲取errors屬性的物件Map的key為name的value
         value="errors.name[0]" :獲取errors屬性的物件Map的key為name的value的第一個元素的值。
注:如果獲取Action Context中的Key值,需要在前面加#(井號)

比如:

<s:property value="#request"/>

相關推薦

Struts2資料簡單驗證property標籤用法

使用addFieldError方法和s:fieldError標籤簡單處理資料校驗 場景:對一個使用者名稱進行驗證,如果使用者名稱不合法,則顯示給客戶端檢視資訊。 URL請求地址: http://localhost:8080/Struts2_SimpleDataValiat

使用Pivot、Pivot_Table、StackUnstack等方法在Pandas資料變形(重塑)

        Pandas是著名的Python資料分析包,這使它更容易讀取和轉換資料。在Pandas中資料變形意味著轉換表或向量(即DataFrame或Series)的結構,使其進一步適合做其他分析。在本文中,小編將舉例說明最常見的一些Pandas重塑功

struts2listmap集合進行封裝

一、對list集合進行封裝 1.首先建立一個user類,並重寫toString方法。 public class User { private String username; private String password;

JAVA象創建初始化過程

2.3 人的 cin 類型變量 認識 handle product window blank 1.Java中的數據類型   Java中有3個數據類型:基本數據類型(在Java中,boolean、byte、short、int、long、char、float、double這八種

Python象的引用共享引用

col 即使 列表 標簽 同一性 例子 垃圾回收 是否 垃圾 在Python中先創建一個對象,然後再將變量指向所創建的對象。 對於每個對象,都有一個頭部信息,在信息中就標記了這個對象的類型信息。每當一個變量名被賦予了一個新的對象,之前那個對象占用的空間就回被回收(如果此時這

jsp資料進行批量刪除操作

批量刪除的SQL:delete from user where uid in(主鍵列表);  UserBiz:  //批量刪除  public boolean batchDelete(String[] uids);  UserBizImpl: public

同時資料做轉換換算

1.如果需要對資料進行換算,例如sum(),min(),max(),但是首先得對資料做轉換和篩選,,有一個很優雅的方式解決 score= [5, 7, 18, 19, 29, 39, 40, 41, 51, 57] s=sum(x*x for x in score) print(s) 2.實際應

SparkStreaming消費Kafka資料 使用zookeeperMySQL儲存偏移量的兩種方式

Spark讀取Kafka資料的方式有兩種,一種是receiver方式,另一種是直連方式。今天分享的SparkStreaming消費Kafka中的資料儲存偏移量的兩種方式都是基於直連方式上的 話不多說 直接上程式碼 ! 第一種是使用zookeeper儲存偏移量 object Kafka

1.2 Vue例項資料,事件方法

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="https://cdn.jsdel

Oracle OCP 學習日誌-資料進行限制排序-02

字串和日期 字串和日期在單引號內; 字元區分大小寫,日期區分格式; 預設日期何氏為DD-MON-RR。 SELECT last_name FROM employees WHERE hire_date = '17-FEB-96' ; 比

使用libpng直接在記憶體資料進行png編解碼

由於工作需要,需要在記憶體中直接對資料進行png編碼,然後再解碼以測試其解碼的速度,與現有的影象壓縮方法進行比較。由於初次接觸libpng,而網上這種直接在記憶體中操作的文章並不多,從頭學習要花不少的時間。鑑於此,我藉助第3方庫:opencv庫,來學習opencv是怎麼在記憶體中對資料進行操作的(open

利用反射機制建立工具類資料進行加密解密

對資料庫的資料進行加密,包括使用者資料、專案資料、聊天資料等,需要在插入表的的時候進行加密,查詢的時候進行解密。利用java的反射機制,建立以下工具類,對資料進行加解密。 public class CryptoUtil { /** * 加密、解密方法 * @param ob

java 使用AES資料進行加密解密

最近做的聊天功能,李老闆希望對聊天的資料進行加密,然後存入資料庫,首先想到的便是AES加密的方式,以前也用過幾次,這次正好記錄下來: MD5加密是不可逆的,可以對使用者的密碼加密; AES加密是可逆的,可以對資料庫的資料進行加密,因為使用者查詢資料時,要返回明文,適合。 publ

在Django資料的增刪改查

1.增加資料 1.Entry.objects.creat(屬性=值,屬性=值) 返回值: 插入成功:則返回建立好的實體物件 插入失敗:則返回None 2.建立一個save的物件,並通過save()進行儲存

小白眼中的Python3.0資料型別List的相關操作

PS:本人小白,剛開始自學,先重在使用,再由淺入深,其中有現階段未領悟到的和筆誤,望前輩指出修正 :)         轉載也請註明出處哦~ 因為學完了Python中資料型別List的章節,所以對個別常用相關操作做個彙總,日後再慢慢增加,做個備忘 1. 建立List資料

javaxml的讀取寫入

java對xml操作需匯入dom4j的jar包(如下): (解析)讀取xml: package com.rj.bd.xml.jx; import java.io.File; import java.util.List; import org.dom4j.Attri

SpringCloudHystrix熔斷器的簡單配置呼叫

1.首先在沒有配置熔斷器之前啟動專案訪問,只啟動了一個模組,註冊中心和遠端呼叫的模組都沒啟動,這時候啟動之後呼叫會失敗 2.然後配置Hystrix首先把依賴加上 <dependency> <groupId>

opencv的一些簡單函式注意事項218/12/18-

①輸出當前opencv版本 printf("\n\n\t\t\t 當前使用的OpenCV版本為:" CV_VERSION ); //CV_VERSION 為當前版本巨集 ②waitkey()函式 waitKey( 0 );//顯示視窗直到按下任意鍵; ③getTick

pandas基礎__之__資料進行篩選排序

使用Pandas對資料進行篩選和排序 在Pandas中通過.sort和.loc函式也可以實現這兩 個功能。.sort函式可以實現對資料表的排序操作;.loc函式可以實現對資料表的篩選操作。 對值進行排

vueaxios資料請求 getpost

axios(基於 promise 的 HTTP 庫) <script src="./vue.js"></script> <!-- 1. 引入axios檔案 --> <script src="./axios.js"></script&g