struts 2(3)---struts 2のサービス側データ検証フレームワークvalidate
17550 ワード
struts 2は、サービス側のデータ検証を容易に実現できる良いデータ検証フレームワークであるvalidateを提供しています.
->複数の情報がある場合this.addFieldError(「name」のニックネームの長さは5より小さくしてはならない).this.addFieldError(「password」、「パスワードの長さは12より小さくない」).またはthis.addFieldError(「」、「ニックネームの長さは5以下でなければならない」).this.addFieldError("","パスワード長は12");全部表示されます
以下は一例です.
1.プロジェクトファイルは以下の通り:2.web.xml
ActionSupport validate() , action , 。 , execute , ,validate :
->検証パス:executeの対応するアクションが実行されます.->検証に失敗しました:->失敗後のreturn結果を定義しました:errorなど、struts.xmlにerrorに対応するページが表示され、エラー情報が書かれた方法で表示されます.->return結果が定義されていません.デフォルトではINPUTが返されます.struts.xmlでinputに対応するページを定義する必要があります.そうしないと、エラーが発生します. ,validate , , , validate+ ( ), validateExecute execute ,validateLogin login 。 validate , validate+ 。
フォーム内のフィールドが不正な場合は、addFieldError(「フィールドname」、「エラー情報」)メソッドを使用してクライアントに戻ることができます.->this.addFieldError(「name」、「ニックネームの長さは5以下でなければならない」).エラーメッセージは、nameに対応するテキストボックスの上に表示されます.エラーメッセージは表示されませんが、ページに追加するとラベルの位置に表示されます.編集者のテストでは、ラベルをフォームの内部に書くと、エラー情報がフォーム全体の上に表示されることがわかりました.->複数の情報がある場合this.addFieldError(「name」のニックネームの長さは5より小さくしてはならない).this.addFieldError(「password」、「パスワードの長さは12より小さくない」).またはthis.addFieldError(「」、「ニックネームの長さは5以下でなければならない」).this.addFieldError("","パスワード長は12");全部表示されます
以下は一例です.
1.プロジェクトファイルは以下の通り:2.web.xml
<?xml version="1.0" encoding= "UTF-8"?>
<web-app version= "3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" >
< display-name></display-name >
<!-- -->
< filter>
<filter-name >struts2 </filter-name >
<!-- struts-2.1.3 ,org.apache.struts2.dispatcher.FileDispatcher , -->
<filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class >
</filter >
<!-- struts2 web -->
<filter-mapping >
<filter-name >struts2 </filter-name >
<url-pattern >/* </url-pattern >
</filter-mapping >
< welcome-file-list>
<welcome-file >index.jsp </welcome-file >
</ welcome-file-list>
</web-app>
3.struts.xml <?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>
<!-- struts -->
<!-- package-name: package; 、 ; package ; package- namespace: ( struts1 ); action ; package-extends: package ; -->
<package name ="struts" namespace="" extends= "struts-default">
<!-- action-name: package action; 、 ; action ; action-class:action ( + ); action-method:action ; execute, execute -->
<action name ="login" class="action.LoginAction" method= "execute">
<result name ="success">/welcome.jsp</ result>
<result name ="index">/login.jsp</ result>
<result name ="input">/login.jsp</ result>
</action >
<action name ="index" class="action.LoginAction" method= "index">
<result name ="index">/login.jsp</ result>
</action >
</package >
</struts>
4.UserBean.java package bean;
public class UserBean {
// , ,
private String name;
private String password;
// , , info
private String info;
public String getName() {
return name;
}
public void setName(String name) {
this. name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this. password = password;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this. info = info;
}
}
5.LoginAction.java package action;
import bean.UserBean;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
/** * Action , , Action , bean。 * * action bean, ModelDriver( ), ModelDriver ModelDriven 。 * * */
public class LoginAction extends ActionSupport implements ModelDriven<UserBean>{
private UserBean model;
@Override
public UserBean getModel() {
if(model == null){
model = new UserBean();
}
return model;
}
public String index(){
return "index";
}
public String execute(){
//
if("sa".equals(this.getModel().getName().trim())&&"aaaaaa".equals(this.getModel().getPassword().trim())){
this.getModel().setInfo(" ");
return SUCCESS;
}else{
this.getModel().setInfo(" ");
return "index";
}
}
/** * , , validate+ ( ) * validate */
public void validateExecute(){
if(this.getModel().getPassword().trim().length() == 0){
//
//* : return , INPUT
// , model.password
// <s:fielderror />
this.addFieldError("", " ");
this.addFieldError("", " ");
}
}
}
6.login.jsp <%@ page language ="java" import="java.util.*" pageEncoding= "UTF-8"%>
<%@ taglib prefix ="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
< head>
<title > </title >
</ head>
< body>
<!-- struts2 , struts2 -->
<s:form action ="login">
<s:textfield label =" " name= "model.name"></s:textfield >
<s:textfield label =" " name= "model.password"></s:textfield >
<s:submit value =" "></ s:submit>
</s:form >
<!-- addFieldError -->
<s:fielderror />
</ body>
</html>
7.welcome.jsp <%@ page language ="java" import="java.util.*" pageEncoding= "utf-8"%>
<% String path = request.getContextPath(); String basePath = request.getScheme()+"://" +request.getServerName()+":" +request.getServerPort()+path+"/"; %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
< head>
<base href ="<%=basePath%> ">
<title >info </title >
</ head>
< body>
<!-- request -->
${request.model.name}<br />
${request.model.info}<br />
<!-- ( ) -->
${model.name}<br />
${model.info}<br />
<!-- -->
${name}<br />
${info}<br />
</ body>
</html>