隨筆 - 312, 文章 - 14, 評(píng)論 - 1393, 引用 - 0
          數(shù)據(jù)加載中……

          Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)

          本文為原創(chuàng),如需轉(zhuǎn)載,請(qǐng)注明作者和出處,謝謝!

          上一篇:Struts2教程4:使用validate方法驗(yàn)證數(shù)據(jù)

          在《Struts2教程4:使用validate方法驗(yàn)證數(shù)據(jù)》中曾講到使用validate方法來驗(yàn)證客戶端提交的數(shù)據(jù),但如果使用validate方法就會(huì)將驗(yàn)證代碼和正常的邏輯代碼混在一起,但這樣做并不利于代碼維護(hù),而且也很難將過些代碼用于其他程序的驗(yàn)證。在Struts2中為我們提供了一個(gè)Validation框架,這個(gè)框架和Struts1.x提供的Validation框架類似,也是通過XML文件進(jìn)行配置。

          一、服務(wù)端驗(yàn)證

          下面將給出一個(gè)例子來演示如何使用Struts2validation框架來進(jìn)行服務(wù)端驗(yàn)證。我們可以按著如下四步來編寫這個(gè)程序:

          【第1步】建立Action類(NewValidateAction.java

          package action;

          import com.opensymphony.xwork2.ActionSupport;

          public class NewValidateAction extends ActionSupport
          {
              
          private String msg;  // 必須輸入
              private int age;   // 在13和20之間
              public String getMsg()
              {
                  
          return msg;
              }
              
          public void setMsg(String msg)
              {
                  
          this.msg = msg;
              }
              
          public int getAge()
              {
                  
          return age;
              }
              
          public void setAge(int age)
              {
                  
          this.age = age;
              }
          }

          下面我們來驗(yàn)證msgage屬性。

          【第2步】配置Action類,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>
              
          <package name="demo" extends="struts-default" namespace="/test">
                  
          <action name="new_validate" class="action.NewValidateAction">
                      
          <result name="input">/validate_form.jsp</result>
                      
          <result name="success">/validate_form.jsp</result>
                  
          </action>
              
          </package>
          </struts>

          【第3步】編寫驗(yàn)證規(guī)則配置文件


             
          這是一個(gè)基于XML的配置文件,和struts1.x中的validator框架的驗(yàn)證規(guī)則配置文件類似。但一般放到和要驗(yàn)證的.class文件在同一目錄下,而且配置文件名要使用如下兩個(gè)規(guī)則中的一個(gè)來命名:

          <ActionClassName>-validation.xml

          <ActionClassName>-<ActionAliasName>-validation.xml

          其中<ActionAliasName>就是struts.xml<ation>name屬性值。在本例中我們使用第一種命名規(guī)則,所以文件名是NewValidateAction-validation.xml。文件的內(nèi)容如下:


          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
          "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"
          >
          <validators>
              
          <field name="msg">
                  
          <field-validator type="requiredstring">
                      
          <message>請(qǐng)輸入信息</message>
                  
          </field-validator>
              
          </field>
              
          <field name="age">
                  
          <field-validator type="int">
                      
          <param name="min">13</param>
                      
          <param name="max">20</param>
                      
          <message>
                          必須在 13至20之間
                      
          </message>
                  
          </field-validator>
              
          </field>
          </validators>

          這個(gè)文件使用了兩個(gè)規(guī)則:requiredstring(必須輸入)和int(確定整型范圍)。關(guān)于其他更詳細(xì)的驗(yàn)證規(guī)則,請(qǐng)讀者訪問http://struts.apache.org/2.0.11.1/docs/validation.html來查看。

          【第4步】編寫數(shù)據(jù)錄入JSP頁。

          Web根目錄中建立一個(gè)validate_form.jsp文件,代碼如下:

          <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
          <%@ taglib prefix="s" uri="/struts-tags" %>
          <link rel="stylesheet" type="text/css" href="<s:url value="/styles/styles.css"/>">
          <html>
            
          <head>
              
          <title>驗(yàn)證數(shù)據(jù)</title>
            
          </head>  
            
          <body>
              
          <s:form action="new_validate" namespace="/test" >
                  
          <s:textfield name="msg" label="姓名"  />
                  
          <s:textfield name="age" label="年齡"/> 
                  
          <s:submit/>
              
          </s:form> 
            
          </body>  
          </html>

          大家要注意一下,如果在struts.xml<package>標(biāo)簽中指定namespace屬性,需要在<s:form>中也將namespaceaction分開寫,如上面代碼所示。不能將其連在一起,Struts2需要分開的actionnamespace。如下面的代碼是錯(cuò)誤的:

          <s:form action="/test/new_validate" >

             ... ...

          </s:form>

          在上面的程序中還使用了一個(gè)styles.css來定制錯(cuò)誤信息的風(fēng)格。代碼如下:

          .label {font-style:italic; }

          .errorLabel {font-style:italic; color:red; }

          .errorMessage {font-weight:bold; color:red; }

              需要在Web根目錄中建立一個(gè)styles目錄,并將styles.css   

          假設(shè)Web工程的上下文路徑是validation,可以使用如下的URL來測(cè)試這個(gè)程序:

              http://localhost:8080/validation/validate_form.jsp

              顯示結(jié)果如圖1所示。



          1

          二、客戶端驗(yàn)證

           

          Struts2中實(shí)現(xiàn)客戶端驗(yàn)證非常簡(jiǎn)單,只需要在<s:form>中加入一個(gè)validate屬性,值為true。如<s:form validate="true" ... > ... </form>即可。

          三、驗(yàn)證嵌套屬性

              有一類特殊的屬性,即這個(gè)屬性的類型是另外一個(gè)JavaBean,如有一個(gè)User類,代碼如下:

          package data;

          public class User
          {
              
          private String name;
              
          private int age;
              
          public String getName()
              {
                  
          return name;
              }
              
          public void setName(String name)
              {
                  
          this.name = name;
              }
              
          public int getAge()
              {
                  
          return age;
              }
              
          public void setAge(int age)
              {
                  
          this.age = age;
              }
          }

          NewValidateAction類中加一個(gè)user屬性,代碼如下:

          package action;

          import com.opensymphony.xwork2.ActionSupport;
          import data.User;

          public class NewValidateAction extends ActionSupport
          {
              
          private String msg;
              
          private int age;
              
          private User user;
              
          public String getMsg()
              {
                  
          return msg;
              }

              
          public void setMsg(String msg)
              {
                  
          this.msg = msg;
              }
              
          public int getAge()
              {
                  
          return age;
              }
              
          public void setAge(int age)
              {
                  
          this.age = age;
              }
              
          public User getUser()
              {
                  
          return user;
              }
              
              
          public void setUser(User user)
              {
                  
          this.user = user;
              }
          }

          如果要驗(yàn)證NewValidateAction中的user屬性,可以使用visitor驗(yàn)證器。操作過程如下:

          首先在NewValidateAction-validation.xml中加入一個(gè)<field>標(biāo)簽,代碼如下:


          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
          "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"
          >
          <validators>
               
              
          <field name="user">
              
          <field-validator type="visitor">
                      
          <param name="context">abc</param>
                      
          <param name="appendPrefix">true</param>
                      
          <message>User:</message>
                  
          </field-validator>
              
          </field>
          </validators>

          其中context參數(shù)將作為驗(yàn)證User類屬性的文件名的一部分,如user屬性返回一個(gè)User對(duì)象,那么用于驗(yàn)證User對(duì)象屬性的文件名為User-abc-validation.xml。這個(gè)文件要和User.class文件在同一個(gè)目錄中。appendPrefix表示是否在字段里加user,如果為trueStruts2就會(huì)使用user.nameform提交的數(shù)據(jù)中查找要驗(yàn)證的數(shù)據(jù)。這個(gè)屬性的默認(rèn)值是true。如果出錯(cuò),Struts2會(huì)將<message>標(biāo)簽中的信息加到User-abc-validation.xml文件中的相應(yīng)錯(cuò)誤信息前面。

          User-abc-validation.xml文件的內(nèi)容如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
           "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"
          >
          <validators>
              
          <field name="name">
                  
          <field-validator type="requiredstring">
                      
          <message>請(qǐng)輸入name</message>
                  
          </field-validator>
              
          </field>
              
          <field name="age">
                  
          <field-validator type="int">
                      
          <param name="min">5</param>
                      
          <param name="max">20</param>
                      
          <message>
                          必須在 5至20之間
                      
          </message>
                  
          </field-validator>
              
          </field>
          </validators>

          下面修改validate_form.jsp,代碼如下:


          <s:form validate="true" action="new_validate" namespace="/test" >
               
          <s:textfield name="msg" label="姓名"  />
               
          <s:textfield name="age" label="年齡"/> 
               
          <s:textfield name="user.name" label="姓名1"  />
               
          <s:textfield name="user.age" label="年齡1"/> 
              
          <s:submit/>
          </s:form>

          大家可以看到,最后兩個(gè)<s:textfield>name屬性是user.nameuser.age,正好是加了前綴的。

          現(xiàn)在重新訪問 http://localhost:8080/validation/validate_form.jsp,驗(yàn)證界面如圖2所示。


                                                             

                                                     2


              經(jīng)筆者測(cè)試,使用visitor無法以客戶端驗(yàn)證的方式來驗(yàn)證user屬性,但NewValidateAction中其他的屬性可以使用客戶端測(cè)試。


          下一篇:Struts2教程6:在Action類中獲得HttpServletResponse對(duì)象的四種方法






          Android開發(fā)完全講義(第2版)(本書版權(quán)已輸出到臺(tái)灣)

          http://product.dangdang.com/product.aspx?product_id=22741502



          Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


          新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

          posted on 2008-04-21 20:06 銀河使者 閱讀(37920) 評(píng)論(32)  編輯  收藏 所屬分類: Struts2 原創(chuàng)

          評(píng)論

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          為什么我按這個(gè)方法去做, 不會(huì)顯示不良的信息呢? 你例子中的紅色字體部分. 謝謝.
          2008-06-02 21:30 | Jeanvixue

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          需要設(shè)置其他的什么屬性之類的來達(dá)到的嗎?
          2008-06-02 22:01 | Jeanvixue

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          @Jeanvixue

          有可能是你的用于驗(yàn)證的xml文件名不對(duì)。或是嵌套字段寫的不對(duì)。如下面的所示:

          <s:textfield name="user.name" label="姓名1" />
          <s:textfield name="user.age" label="年齡1"/>

          再仔細(xì)檢查一下。
          2008-06-02 22:17 | 銀河使者

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          以下是我實(shí)際使用的部分, 但是沒有辦法看到提示的信息.
          JSP內(nèi)容:
          <s:form action="login">
          <s:textfield name="username" key="username"/>
          <s:password name="password" key="password" />

          <s:submit key="login"></s:submit>
          </s:form>

          loging的Class為loginAction
          loginAction-validation.xml內(nèi)容:
          <validators>
          <field name="username">
          <field-validator type="requiredstring">
          <message>usernamerequired</message>
          </field-validator>
          </field>
          </validators>
          2008-06-03 16:17 | Jeanvixue

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          有幾點(diǎn)你可以看一下。
          1. 類名是loginAction嗎?一般類名單詞第一個(gè)字母都是大寫,如LoginAction。看看是不是名子弄錯(cuò)了。是區(qū)分大小寫的。
          2. 驗(yàn)證xml文件名為:類名-validation.xml,如類名為LoginAction,xml文件名為LoginAction-validation.xml,注意大小寫。
          3. LoginAction-validation.xml和LoginAction.class必須在同一個(gè)目錄下。看看這些文件的位置
          2008-06-03 16:27 | 銀河使者

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          謝謝您的回復(fù).
          以上3點(diǎn)沒有問題我都注意到了, 因?yàn)槲业氖终`,所以我把LoginAction的第一個(gè)字母用了小寫了. 所以我就都用小寫了.
          我用的是Netbeans6.1進(jìn)行開發(fā)的. 我不知道是否還有哪里的設(shè)置會(huì)影響到這些.
          2008-06-03 17:10 | Jeanvixue

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          我沒用過netbeans6.1開發(fā)過基于struts的程序,用的是myeclipse6.x。

          但我想netbeans6.1應(yīng)該差不多。至于沒出來錯(cuò)誤提示的原因可能是某些資源沒找到,如資源文件、驗(yàn)證文件(可能路徑不對(duì))、或是要驗(yàn)證的屬性寫的不正確。具體的只有調(diào)程序才能出來,原因很多。
          2008-06-03 20:06 | 銀河使者

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          建議你做個(gè)簡(jiǎn)單的程序,用記事本寫個(gè)程序,最簡(jiǎn)單的,按著步驟寫,看看到底是哪個(gè)地方出錯(cuò)了。用struts做這些東西稍有不注意,就可能出錯(cuò)。
          2008-06-03 20:07 | 銀河使者

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          大家要注意一下,如果在struts.xml的<package>標(biāo)簽中指定namespace屬性,需要在<s:form>中也將namespace和action分開寫,如上面代碼所示。不能將其連在一起,Struts2需要分開的action和namespace。如下面的代碼是錯(cuò)誤的:

          <s:form action="/test/new_validate" >

          ... ...

          </s:form>


          你這里提到這個(gè),但你前面的章節(jié)都是這樣寫的

          <s:form action="mystruts/sum.action" >
          <s:textfield name="operand1" label=" 操作數(shù)1"/>
          <s:textfield name="operand2" label=" 操作數(shù)2" />
          <s:submit value="代數(shù)和" />
          </s:form>

          讓我很郁悶!!!!
          2008-08-20 11:53 | bigheadbird

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          to bigheadbird

          是這樣的,可能是我沒寫清楚。在struts 2中,如果在<package>標(biāo)簽中加namespace,一般需要在<s:form>標(biāo)簽中使用namespace指定命名空間,再用action屬性指定動(dòng)作名,代碼如下:
          <s:form action="abcd" namespace="xyz" >
          ... ...
          </s:form>

          上面的代碼所對(duì)應(yīng)的struts.xml中定義如下:
          <package name="mypackage" namespace="xyz" extends="struts-default">
          <action name="abcd" class="..."/>
          </package>

          如果按著上面的寫法是沒有任何問題的,也是Struts 2建議的方式
          但要知道,<s:form>實(shí)際上就是對(duì)應(yīng)的html的<form>標(biāo)簽,而action屬性其實(shí)就是<form>的屬性,因此,也可以直接將命名空間寫在action屬性值中,而不使用<s:form>的namespace屬性。如下面代碼所示:
          <s:form action="mystruts/sum.action" >
          <s:textfield name="operand1" label=" 操作數(shù)1"/>
          <s:textfield name="operand2" label=" 操作數(shù)2" />
          <s:submit value="代數(shù)和" />
          </s:form>

          這么做同樣可以成功提交給Action類,但這么做,Struts 2會(huì)在控制臺(tái)輸出一個(gè)類似于下面的警告:
          警告: No configuration found for the specified action: 'xyz/parent.action' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
          說是未找到xyz/parent.action, 這也說明Struts 2在處理時(shí)是將namespace和action屬性分開的。但這個(gè)警告并不會(huì)影響程序的運(yùn)行。就象我們?cè)诰帉慾ava或其他語言的程序時(shí),編譯器可能會(huì)出現(xiàn)一些警告信息,但仍然可以編譯通過,并成功運(yùn)行。
          但要注意,如果不使用namespace,只使用action來表示命名空間的話,后面必須加上“.action”后綴,如果Struts 2未找到這個(gè)action,是不會(huì)自動(dòng)加上.action后綴的。

          實(shí)際上,還可以直接使用<form>來處理

          我在后面的程序中直接使用了第二種方式,其實(shí)讀者可以選擇自己想用的方式,但筆者建議使用Struts 2建議的第一種方式。
          2008-08-20 13:04 | 銀河使者

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          哈哈,回復(fù)很及時(shí),很詳細(xì).謝謝.
          2008-08-20 15:04 | bigheadbird

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          您好 ,請(qǐng)問您驗(yàn)證后的錯(cuò)誤信息是用什么標(biāo)簽顯示出來的,我顯示不出來,謝謝
          2008-09-27 17:00 |

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          to 董

          是這樣的,如果使用Struts 2的<s:textfield>或其他的表單標(biāo)簽,字段錯(cuò)誤是可以自動(dòng)顯示出的,并不需要編寫代碼或使用<s:fielderror/>標(biāo)簽去顯示,當(dāng)然,使用<s:fielderror/>標(biāo)簽也可以顯示字段錯(cuò)誤,但就重復(fù)了。

          如果使用普通的html標(biāo)簽,就需要使用<s:fielderror/>標(biāo)簽顯示字段錯(cuò)誤了。如果是動(dòng)作錯(cuò)誤或消息,就需要使用<actionerror/>或<actionmessage/>標(biāo)簽顯示了。
          2008-09-29 10:26 | 銀河使者

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          您好!我把類和valition.xml文件放置在同一個(gè)包中,配置文件也配置好了,但是出錯(cuò)信息不會(huì)顯示(紅色部分),是什么原因!配置也和你的服務(wù)器端驗(yàn)證的例子一樣,導(dǎo)入顯示出錯(cuò)信息的樣式,但并沒有進(jìn)行驗(yàn)證!
          2008-09-30 22:30 | jackie

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          不是validation.xmL文件,是<ActionClassName>-validation.xml文件
          2008-09-30 22:49 | 銀河使者

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          Document root element "validators", must match DOCTYPE root "struts".
          我出現(xiàn)了這個(gè)錯(cuò)誤
          怎么也找不錯(cuò)來問題。
          請(qǐng)指教!
          2008-10-24 10:45 | lyshyhaungli

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          我解決了這個(gè)問題了
          哈哈!!
          2008-10-24 10:54 | lyshyhaungli

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          那么麻煩的驗(yàn)證??而且還要把驗(yàn)證的xml和bean放在同一個(gè)目錄下.我們的工程bean本來就是jar包.
          2009-02-10 12:11 | 1121

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          @1121
          放到一起是在開發(fā)階段,發(fā)布了,就已經(jīng)放到j(luò)ar包中了。
          2009-02-10 12:27 | 銀河使者

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          lz寫得很好啊
          問個(gè)問題哈:這個(gè)例子里如果不想要驗(yàn)證了,是不是光把<s:form>中的validate=true去掉是不夠的吧?是不是還得把*-validation.xml中的想對(duì)應(yīng)的部分去掉?
          謝謝!
          2009-08-11 14:19 | 五角

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          -..- 照著作者的方法寫了驗(yàn)證..一點(diǎn)作用也沒有....
          完全不知道錯(cuò)誤出在哪里..
          大小寫,名稱,字段,檢查了又檢查..

          但是是一點(diǎn)反應(yīng)也沒有..
          2009-10-01 10:46 | Cancer

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          知道怎么 指定 驗(yàn)證 某個(gè) 方法 么
          2010-04-10 15:21 | grass

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          在<s:form>標(biāo)簽中加入validate=true屬性,就為客戶端驗(yàn)證。。沒試出來效果,好像跟不寫,沒什么區(qū)別呀,驗(yàn)證時(shí),還是會(huì)刷頁面,地址欄跳到action中。到底這里說的,客戶端驗(yàn)證,是什么意思呀?
          2010-07-03 10:03 | elvis

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          不錯(cuò),就是驗(yàn)證沒試出來,誒
          2011-03-22 17:11 | 死掉

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)[未登錄]  回復(fù)  更多評(píng)論   

          如你所說:

          兩個(gè)規(guī)則中的一個(gè)來命名:

          <ActionClassName>-validation.xml

          <ActionClassName>-<ActionAliasName>-validation.xml

          其中<ActionAliasName>就是struts.xml中<ation>的name屬性值。


          N久沒試出來!!!!!


          我的struts.xml 是這樣:
          <action name="login" class="action.MyAction">
          <result name="input">/login.jsp</result>
          <result name="success">/login.jsp</result>
          <result name="login">/login.jsp</result>
          </action>


          驗(yàn)證的xml 取名是這樣login-validation.xml action 的name屬性值是login吧?
          后來改成MyAction-validation.xml 就ok 了,是我理解錯(cuò)了,還是你忽悠人呢?
          2012-01-04 13:09 | 小拽

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          警告: Error setting expression 'age' with value '[Ljava.lang.String;@8698fa'

          當(dāng)年齡 那一欄 不寫 的時(shí)候 爆這個(gè)警告
          2012-07-26 11:35 | 110

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          傻逼
          2012-07-27 16:04 | ssss

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          一、服務(wù)端驗(yàn)證,沒有反應(yīng),是不是少了什么代碼沒貼
          2013-02-16 10:28 | 彭堃

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   


          @Cancer
          validation.xml沒有和驗(yàn)證類放在同一個(gè)文件夾下
          2013-02-17 11:41 | 彭堃

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)[未登錄]  回復(fù)  更多評(píng)論   

          @elvis
          你查看網(wǎng)頁源代碼就能看出來了。 加了validate=“true"的客戶端會(huì)自動(dòng)生成js代碼做驗(yàn)證。而不加的不會(huì)有js代碼,也就是在服務(wù)端做的驗(yàn)證。我想這樣做的原因是為了讓客戶端分擔(dān)服務(wù)端的壓力吧!
          2013-05-06 15:39 | zm

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          試過驗(yàn)證錯(cuò)誤信息沒出來
          2014-03-09 21:57 | Fylee

          # re: Struts2教程5:使用Validation框架驗(yàn)證數(shù)據(jù)  回復(fù)  更多評(píng)論   

          我在最代碼網(wǎng)站上轉(zhuǎn)載了你的文章,有問題請(qǐng)回復(fù),地址:http://www.zuidaima.com/share/1778685765291008.htm
          2014-04-13 22:01 | 最代碼
          主站蜘蛛池模板: 休宁县| 沧州市| 汉源县| 沙河市| 龙山县| 宝鸡市| 十堰市| 抚松县| 邢台县| 嘉定区| 盐池县| 元江| 翁牛特旗| 冷水江市| 兴安县| 高州市| 甘德县| 班玛县| 汉阴县| 德钦县| 云龙县| 喜德县| 阳春市| 新干县| 河津市| 和硕县| 贵州省| 高州市| 丰原市| 翁源县| 台安县| 潜江市| 景谷| 宿州市| 米泉市| 临漳县| 扎鲁特旗| 松溪县| 临邑县| 高碑店市| 兴山县|