struts2官方 中文教程 系列六:表單驗證

先貼個本帖的地址,以免被爬:struts2教程 官方系列六:表單驗證? 即?http://www.cnblogs.com/linghaoxinpian/p/6906720.html?

下載本章節代碼

?

介紹

在本教程中,我們將探索使用Struts2來驗證用戶在表單上的輸入。有兩種方法可以來進行表單驗證。本教程將介紹更基本的方法,在Struts2 Action類中包含驗證。

為了使Struts2 Action類在Struts2 表單中驗證用戶的輸入,您必須在Action類中定義一個validate方法。假設我們有這些業務規則:

  1.用戶必須提供第一個名稱用戶

  2.必須提供一個電子郵件地址用戶

  3.未到18歲不能注冊

?

添加如下代碼到/src/action/RegisterAction.java中

validate method

public void validate(){if (personBean.getFirstName().length() == 0) {addFieldError("personBean.firstName", "First name is required.");}if (personBean.getEmail().length() == 0) {addFieldError("personBean.email", "Email is required.");}if (personBean.getAge() < 18) {addFieldError("personBean.age", "Age is required and must be 18 or older");}
}

當用戶在register表單上按下提交按鈕時,Struts2將把用戶的輸入傳遞給personBean的實例字段。然后Struts 2將自動執行validate?方法。如果if判斷條件為true,那么Struts2將調用它的addFieldError方法(繼承自ActionSupport類)。

如果驗證失敗,那么Struts2就不會繼續調用execute方法了。相反,Struts2 將返回“input”作為該操作的結果。(常用結果的還有success、error)

?

處理 "Input" 結果

那么,如果Struts2返回“input”表示用戶的表單輸入無效,那么接下來該怎么辦呢?在大多數情況下,我們將希望重新顯示具有表單的web頁面,并將錯誤消息包含在表單中,以告知用戶。

為了處理"input" 結果,我們需要在struts.xml添加配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd"><struts><constant name="struts.devMode" value="true" /><package name="basicstruts2" extends="struts-default"><action name="index"><result>/index.jsp</result></action><!--hello-><action name="hello" class="action.HelloWorldAction" method="execute"><result name="success">/HelloWorld.jsp</result></action><!-- register --><action name="register" class="action.RegisterAction" method="execute"><result name="success">/thankyou.jsp</result><result name="input">/register.jsp</result></action></package></struts>

?因此,當驗證失敗,Struts2 返回"input"結果時,Struts2 將重新顯示register.jsp。由于我們使用了Struts2 的表單標簽,因此Struts2將自動的添加錯誤消息。這些錯誤消息是我們在addFieldError方法調用中指定的。addFieldError方法有兩個參數。第一個是錯誤字段的表單字段名,第二個是在表單字段上方顯示的錯誤消息 ?

addFieldError("personBean.firstName", "First name is required.")

將會在表單上的firstName字段上面顯示"First name is required."

?

運行

?

添加css

Struts2 的<s:head/>標簽可用于對錯誤消息添加CSS,這個標簽要放在HTML的<head>標簽中,重新運行:

?

總結

本教程通過向Action類添加驗證方法來驗證用戶的表單輸入。還有一種更復雜的方法可以使用XML驗證用戶輸入。如果您想了解關于在Struts 2中使用XML進行驗證的更多信息,請參閱驗證Validation

在我們的下一個教程中,我們將使用消息資源文件將文本從視圖頁面中分離出來。

轉載于:https://www.cnblogs.com/linghaoxinpian/p/6906720.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392638.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392638.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392638.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Alictf 2015決賽題目設計和解題思路

解題思路&#xff1a; https://weibo.com/p/1001603836186467681086 設計題目&#xff1a; http://www.cnblogs.com/qsjmobilesec/p/4456090.html

【轉載】 華為榮耀手機如何進入開發者模式

針對手機APP開發人員來說&#xff0c;很多時候開發手機APP應用的時候&#xff0c;需要進入手機的開發者模式中對程序進行調試等操作&#xff0c;此文將介紹華為榮耀手機如何進入開發者模式&#xff0c;以華為榮耀V9手機為例&#xff0c;華為榮耀V10、榮耀V20、華為P20、華為P30…

c++ dll 類使用_在.Net Core 中使用鉤子

目錄前言什么是鉤子使用鉤子3. 掛載多個鉤子4. 在鉤子中加載額外的程序集5. 在 Asp.Net Web Api 項目中使用鉤子結束語演示代碼下載前言Host startup hook&#xff0c;是2.2中提供的一項新的功能&#xff0c;通過使用主機啟動鉤子&#xff0c;允許開發人員在不修改代碼的情況下…

3c技能和背包需要改建嗎?_認為您需要儀表板? 您應該改建一個筆記本。

3c技能和背包需要改建嗎?by Mahdi Karabiben通過Mahdi Karabiben 認為您需要儀表板&#xff1f; 您應該改建一個筆記本。 (Think you need a Dashboard? You should build a Notebook instead.) After first establishing themselves as a key component of the standard Bu…

leetcode 147. 對鏈表進行插入排序

對鏈表進行插入排序。 插入排序的動畫演示如上。從第一個元素開始&#xff0c;該鏈表可以被認為已經部分排序&#xff08;用黑色表示&#xff09;。 每次迭代時&#xff0c;從輸入數據中移除一個元素&#xff08;用紅色表示&#xff09;&#xff0c;并原地將其插入到已排好序的…

JSP過濾器Filter配置過濾類型匯總

一、配置方法1 映射過濾應用程序中所有資源<filter> <filter-name>loggerfilter</filter-name> <filter-class>myfilter.LoggerFilter</filter-class></filter><filter-mapping> <filter-name>loggerfilter</filt…

ERP流程入門_從會計分錄理解企業基本流程[轉]

ERP流程入門_從會計分錄理解企業基本流程 本貼寫給尚未在企業工作過的朋友&#xff01;了解企業的基本流程的一個方法是看它的會計分錄,我們現在來看一個完整的企業基本流程&#xff0c;它的會計分錄是如何做的&#xff0c;其中有些帳戶名稱可能不一樣&#xff0c;不過沒關系&a…

薩默爾機器人_助力產業發展 西安市人工智能機器人學會正式成立

8月23日&#xff0c;西安市人工智能機器人學會在西咸新區灃東新城協同創新港正式成立。西安報業全媒體記者 馮煒 攝8月23日&#xff0c;西安市人工智能機器人學會正式成立。學會將通過市場化機制、社會化服務等方式&#xff0c;整合科技創新資源和人才培養資源&#xff0c;促進…

粒度過粗_這些書幫助我度過了第一次成為技術主管的經歷

粒度過粗by Danny Perez丹尼佩雷斯(Danny Perez) 這些書幫助我度過了第一次成為技術主管的經歷 (These books helped me navigate my first time being a tech lead) The tech lead was moving to another team for a long-term assignment, and I took over as the engineeri…

隨便說說:在ASP.NET應用程序中上傳文件

在Web程序中上傳文件是很常見的需求。利用HTTP協議上傳文件的方式非常有限&#xff0c;最常見的莫過于使用<input type"file" />元素進行上傳。這種上傳方式會將內容使用multipart/form-data方案進行編碼&#xff0c;并將內容POST到服務器端。使用multipart/fo…

leetcode 148. 排序鏈表(歸并排序)

給你鏈表的頭結點 head &#xff0c;請將其按 升序 排列并返回 排序后的鏈表 。 進階&#xff1a; 你可以在 O(n log n) 時間復雜度和常數級空間復雜度下&#xff0c;對鏈表進行排序嗎&#xff1f; 示例 1&#xff1a; 輸入&#xff1a;head [4,2,1,3] 輸出&#xff1a;[1…

理論與哲學就是梳理無限感性經驗和知性知識的工具

理論與哲學就是梳理無限感性經驗和知性知識的工具&#xff0c; 是因為人腦的特性&#xff0c;或者說人腦功能的局限性而被人創造出來的思想工具。 工具服務于實踐&#xff0c;并被實踐所檢驗&#xff08;描述、解釋、預見&#xff09;。 工具一旦創建就有其客觀性&#xff0c;但…

記一次調用API遇到的問題

調用sonar API 接口&#xff0c;地址如下&#xff1a; http://sonar.*****.com/api/measures/search_history?componenttcmp-devops-service&metricssqale_index%2Cduplicated_lines_density%2Cncloc%2Ccoverage%2Cbugs%2Ccode_smells%2Cvulnerabilities&ps1000 url上…

h5滾動隱藏滾動條_這 10 個值得開啟的隱藏功能,讓你的 Chrome 釋放更多潛力

上次分享了讓 Chrome 瀏覽器用得更順手的地址欄命令&#xff0c;跟大家整理和介紹了多個 Chrome 地址欄命令&#xff0c;利用好這些命令工具能夠提升瀏覽器配置效率&#xff0c;讓你的 Chrome 瀏覽器用得更順手。這次介紹的是 Chrome 內置的實驗功能&#xff0c;它被單獨放在了…

redux ngrx_另一個減少Redux(NGRX)應用程序樣板的指南

redux ngrxby Andrey Goncharov通過安德烈貢恰洛夫(Andrey Goncharov) 另一個減少Redux(NGRX)應用程序樣板的指南 (Yet another guide to reduce boilerplate in your Redux (NGRX) app) 我們在這里要覆蓋什么&#xff1f; (What are we gonna cover here?) In this article,…

leetcode 242. 有效的字母異位詞

給定兩個字符串 s 和 t &#xff0c;編寫一個函數來判斷 t 是否是 s 的字母異位詞。 示例 1: 輸入: s “anagram”, t “nagaram” 輸出: true 示例 2: 輸入: s “rat”, t “car” 輸出: false 代碼 class Solution {public boolean isAnagram(String s, String t) {…

技巧:使用User Control做HTML生成

User Control大家肯定不會陌生&#xff0c;在使用ASP.NET的過程中&#xff0c;除了aspx頁面&#xff0c;最常見的就莫過于ascx了。ascx是一個有獨立邏輯的組件&#xff0c;提供了強大的復用特性&#xff0c;合理使用&#xff0c;能夠大大提高開發效率。通過User Control直接生成…

Spring Boot干貨系列:(二)配置文件解析

前言 上一篇介紹了Spring Boot的入門&#xff0c;知道了Spring Boot使用“習慣優于配置”&#xff08;項目中存在大量的配置&#xff0c;此外還內置了一個習慣性的配置&#xff0c;讓你無需手動進行配置&#xff09;的理念讓你的項目快速運行起來。所以&#xff0c;我們要想把S…

mysql常用操作記錄

&#xff08;1&#xff09;判斷表中一個字段是空&#xff0c;可為&#xff1a;字段名 IS NULL&#xff08;2&#xff09;類似oracle的decode作用&#xff1a;IF(字段名>0,字段名,0)&#xff08;3&#xff09;時間格式&#xff08;年-月-日&#xff09;&#xff1a;DATE_FORM…

小愛音響調用php接口_阿里API調用二(PHP)

接口地址拼合成功后&#xff0c;用curl函數post獲取阿里返回的完整數據&#xff0c;將地址傳入getContent()方法中&#xff0c;絕對能獲取用戶數據。public function getContent($url){$ch curl_init();// 初始化curl_setopt($ch,CURLOPT_URL,$apiprourlall);curl_setopt($ch,…