欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

使用AbstractWizardFormController提交復雜表單

系統 2236 0

使用其它類型的命令控制器,命令對象(POJO JavaBean)只裝載一次,使用向導控制器,用戶沒完成向導頁面中的一步,都會有一個命令對象裝載。使用向導,我們只做一次驗證是不可行的,因為如果你檢查的太早的話,找到的驗證問題可能是由于用戶沒有完成向導而導致的,相反,在完成按鈕按下后檢查就太遲了,因為發現的問題可能跨越了多了頁面,我們應該回退到哪個頁面呢?

根據? http://blog.csdn.net/daryl715/archive/2007/06/11/1647870.aspx 這篇心得的實現,我們進行修改,加入驗證功能

首先編寫JavaBean Vote的驗證單元

?

package ?model;

import ?org.springframework.validation.Errors;
import ?org.springframework.validation.Validator;

public ? class ?FeedBackValidator? implements ?Validator? ... {

????
public ? boolean ?supports(Class?cls)? ... {
????????
return ?cls.equals(Vote. class );
????}


????
public ? void ?validate(Object?object,?Errors?errors)? ... {
????????
????}

????
????
public ? void ?validateName(String?name,Errors?errors) ... {
????????
if (name == null || name.equals( "" )) ... {
????????????errors.rejectValue(
" name " ,? " not?null " , null ,? " name必須輸入 " );
????????}

????}

????
public ? void ?validateOption(String?option,Errors?errors) ... {
????????
if (option == null || option.equals( "" )) ... {
????????????errors.rejectValue(
" option " ,? " not?null " , null ,? " option必須輸入 " );
????????}

????}

????
public ? void ?validateResult(String?result,Errors?errors) ... {
????????
if (result == null || result.equals( "" )) ... {
????????????errors.rejectValue(
" result " ,? " not?null " , null ,? " result必須輸入 " );
????????}

????}

????
public ? void ?validateId(String?id,Errors?errors) ... {
????????
if (id == null || id.equals( "" )) ... {
????????????errors.rejectValue(
" id " ,? " not?null " , null ,? " id必須輸入 " );
????????}

????}


}

?

修改train-servlet.xml,注入validator

?

< bean? id ="FeedbackController" ?class ="Action.FeedBackWizardController" >
??
< property? name ="successView" >< value > formWizard/thankyou </ value > ? </ property >
??
< property? name ="cancelView" >< value > formWizard/first </ value > ? </ property >
??
< property? name ="commandClass" >< value > model.Vote </ value ></ property >
??
< property? name ="validator" >
????
< bean? class ="model.FeedBackValidator" />
??
</ property >
??
< property? name ="pages" >
????
< list >
??????
< value > formWizard/first </ value >
??????
< value > formWizard/id </ value >
??????
< value > formWizard/name </ value >
??????
< value > formWizard/option </ value >
??????
< value > formWizard/result </ value >
????
</ list >
??
</ property >
</ bean >

?

修改頁面,以id.jsp為例

<body>
? <spring:bind path="command.id">
?? <form action="feedback.mvc" method="post">
???? id: <input type="text" name="id" value="<c:out value="${status.value}"/>"/>
????? <c:if test="${status.error}">
????????? <font color="#FF0000">
????????? 錯誤:
?????????? <c:forEach items="${status.errorMessages}" var="error">
??????????????? <c:out value="${error}"/>
?????????? </c:forEach>
????????? </font>
??????? </c:if>
???? <input type="submit" value="下一步" name="_target2" />

???? <input type="submit" value="取消" name="_cancel"/>?
????? <input type="submit" value="完成" name="_finish"/>
?? </form>
?? </spring:bind>
? </body>

?

其他頁面和id.jsp類似

控制器:新覆蓋了validatePage方法,實現驗證功能

?

package ?Action;

import ?java.util.Enumeration;

import ?javax.servlet.http.HttpServletRequest;
import ?javax.servlet.http.HttpServletResponse;

import ?model.FeedBackValidator;
import ?model.Vote;

import ?org.springframework.validation.BindException;
import ?org.springframework.validation.Errors;
import ?org.springframework.web.servlet.ModelAndView;
import ?org.springframework.web.servlet.mvc.AbstractWizardFormController;
import ?org.springframework.web.util.WebUtils;

public ? class ?FeedBackWizardController? extends ?AbstractWizardFormController? ... {

????
private ?String?successView;
????
private ?String?cancelView;

????
protected ? void ?validatePage(Object?object,?Errors?errors,? int ?page, boolean ?isFinish)? ... {
????????Vote?vote
= (Vote)object;
????????FeedBackValidator?feedBackValidator
= (FeedBackValidator)getValidator();
????????
if (page == 1 ) ... { // 檢查第一頁的id
????????????feedBackValidator.validateId(vote.getId(),?errors);
????????}

????????
if (page == 2 ) ... { // 檢查第二頁的name
????????????feedBackValidator.validateName(vote.getName(),?errors);
????????}

????????
if (page == 3 ) ... { // 檢查第三頁的option
????????????feedBackValidator.validateOption(vote.getOption(),?errors);
????????}

????????
if (page == 4 ) ... { // 檢查第四頁的result
????????????feedBackValidator.validateResult(vote.getResult(),?errors);
????????}

????????
if (isFinish) ... {
????????????
// 表單向導結束
????????????System.out.println( " form?finished " );
????????}

????}


????
public ?String?getCancelView()? ... {
????????
return ?cancelView;
????}


????
public ? void ?setCancelView(String?cancelView)? ... {
????????
this .cancelView? = ?cancelView;
????}


????
public ?String?getSuccessView()? ... {
????????
return ?successView;
????}


????
public ? void ?setSuccessView(String?successView)? ... {
????????
this .successView? = ?successView;
????}


????
protected ?ModelAndView?processCancel(HttpServletRequest?request,?HttpServletResponse?response,?Object?object,?BindException?exception)? throws ?Exception? ... {

???????
return ? new ?ModelAndView( this .getCancelView());
????}

?

????
protected ?ModelAndView?processFinish(HttpServletRequest?request,
????????????HttpServletResponse?response,?Object?object,?BindException?exception)
????????????
throws ?Exception? ... {
????????Vote?vote
= (Vote)object;
????????
????????
return ? new ?ModelAndView( this .getSuccessView(), " vote " ,vote);
????}


}



使用AbstractWizardFormController提交復雜表單的驗證解決方案


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 四虎在线观看一区二区 | 中国女警察一级毛片视频 | 99久久99久久 | 露娜同人18av黄漫网站 | 一级黄色毛片 | 久久精品国产精品亚洲综合 | 欧美第一页 | 特级全黄一级毛片免费 | av网址在线播放 | 97视频免费播放观看在线视频 | 免费视频日韩 | 日本午夜视频 | 五月婷婷社区 | 无码观看AAAAAAAA片 | 波多野结衣全部系列在线观看 | 色大18成网站www在线观看 | 国产 日韩 欧美 亚洲 | 久久久综合 | 成人免费影院 | 国产精品小视频在线观看 | 精品视频一区二区观看 | 欧美日韩在线免费观看 | 欧美成人全部费免网站 | 成人国产网站 | 久久久久国产精品www | 国产福利视频在线观看 | 成人啪啪网站 | 免费伊人网 | 婷婷在线免费视频 | 午夜看片在线观看 | 日本三日本三级香港三级 | www.成人.com| 久草精品视频在线观看 | 欧美性成人| 亚洲精品乱码久久久久久花季 | 精品国产精品国产 | 欧美一区二区在线观看视频 | 久久精品网 | 婷婷综合色 | 一级片视频网站 | 亚洲我不卡 |