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、Stack和Unstack等方法在Pandas中對資料變形(重塑)
Pandas是著名的Python資料分析包,這使它更容易讀取和轉換資料。在Pandas中資料變形意味著轉換表或向量(即DataFrame或Series)的結構,使其進一步適合做其他分析。在本文中,小編將舉例說明最常見的一些Pandas重塑功
struts2中對list和map集合進行封裝
一、對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中的資料 使用zookeeper和MySQL儲存偏移量的兩種方式
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資料
java中對xml的讀取和寫入
java對xml操作需匯入dom4j的jar包(如下): (解析)讀取xml: package com.rj.bd.xml.jx; import java.io.File; import java.util.List; import org.dom4j.Attri
SpringCloud中Hystrix中熔斷器的簡單配置和呼叫
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函式可以實現對資料表的篩選操作。 對值進行排
vue中axios資料請求 get和post
axios(基於 promise 的 HTTP 庫) <script src="./vue.js"></script> <!-- 1. 引入axios檔案 --> <script src="./axios.js"></script&g