《Java從入門到放棄》入門篇:Struts2的常用驗證方式(二)
前一回,我們講完了“直接在功能方法中寫驗證代碼”這種驗證方式,接下來,我們繼續搞定後續的三種方式。
二、重寫validate方法(註意這個方法會驗證該類中所有的方法)
使用重寫驗證方法的好處就是,又可以少寫一句代碼了!!!!
2.1)修改Action類,在其中添加valiate方法,把之前寫在add方法中的驗證代碼剪切過來
//修改後的add方法 public String add() { System.out.println("調用了添加的方法!"); System.out.println("編號:"+singer.getSingerID()); System.out.println("姓名:"+singer.getSingerName()); System.out.println("地區:"+singer.getArea()); System.out.println("留言:"+msg); // if(this.hasErrors()){ // return INPUT; // } return "add"; } //沒有寫任何返回值,但只要調用了addFieldError方法,則默認返回INPUT @Override public void validate() { //編號必須是六位的數字 if(Integer.toString(singer.getSingerID()).length()!=6){ this.addFieldError("err_id", "編號必須是6位的數字"); } //姓名不能為空 if("".equals(singer.getSingerName().trim())){ this.addFieldError("err_name", "姓名不能為空"); } }
2.2)打開對應頁面,localhost:8888/strutsDemo/singeradd.action,結果如下:
使用上面這種方法要註意,現在就算訪問別的方法(除add外的其他方法),也會調用該驗證。
我們在validate方法中加一句代碼,來看看效果
@Override public void validate() { //新增的一句代碼 System.out.println("調用了驗證方法"); //編號必須是六位的數字 if(Integer.toString(singer.getSingerID()).length()!=6){ this.addFieldError("err_id", "編號必須是6位的數字"); } //姓名不能為空 if("".equals(singer.getSingerName().trim())){ this.addFieldError("err_name", "姓名不能為空"); } }
接下來,通過http://localhost:8888/strutsDemo/smng_update.action,調用update方法,可以看到效果如下圖:
我們希望每個驗證方法只驗證其對應的操作,如何解決這個問題呢?這就要用到第三種方式,請Look
三、使用ValidateXxx方法(Xxx對應要驗證的方法的方法名)
在前一種方式的基礎上,我們把validate的方法名改成validateAdd,並去掉Override註解,就實現了第三種方法(我就喜歡這樣的方式,因為········,不用再貼代碼和截圖。),大家改完就可以再訪問對應的功能試試。
如果有問題,那就···········自行解決吧,好吧,好人做到底,如果報錯,註意看錯誤提示,,如果只是查看調用與否,請把兩個if語句註釋,就可以解決這個問題了。最終結果如下,只有添加方法調用了驗證:
至於第四種方式,我們就不在入門篇裏講了,各位看官如果有興趣,可以先自行研究。
今天的內容這到兒就結束了,是不是很輕松!!!
本文出自 “軟件思維” 博客,請務必保留此出處http://softi.blog.51cto.com/13093971/1952609
《Java從入門到放棄》入門篇:Struts2的常用驗證方式(二)