亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

使用AbstractWizardFormController提交復(fù)雜表單

系統(tǒng) 2437 0

使用其它類型的命令控制器,命令對(duì)象(POJO JavaBean)只裝載一次,使用向?qū)Э刂破鳎脩魶]完成向?qū)ы撁嬷械囊徊剑紩?huì)有一個(gè)命令對(duì)象裝載。使用向?qū)В覀冎蛔鲆淮悟?yàn)證是不可行的,因?yàn)槿绻銠z查的太早的話,找到的驗(yàn)證問題可能是由于用戶沒有完成向?qū)Ф鴮?dǎo)致的,相反,在完成按鈕按下后檢查就太遲了,因?yàn)榘l(fā)現(xiàn)的問題可能跨越了多了頁面,我們應(yīng)該回退到哪個(gè)頁面呢?

根據(jù)? http://blog.csdn.net/daryl715/archive/2007/06/11/1647870.aspx 這篇心得的實(shí)現(xiàn),我們進(jìn)行修改,加入驗(yàn)證功能

首先編寫JavaBean Vote的驗(yàn)證單元

?

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">
????????? 錯(cuò)誤:
?????????? <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方法,實(shí)現(xiàn)驗(yàn)證功能

?

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) ... {
????????????
// 表單向?qū)ЫY(jié)束
????????????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提交復(fù)雜表單的驗(yàn)證解決方案


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 精品免费视在线观看 | 亚洲毛片网站 | 久久久精品免费 | 狠狠综合久久综合网站 | 午夜国产精品久久久久 | 91国内精品线免费播放 | 国产成人禁片在线观看 | 香蕉视频在线免费 | 一二三区无线码2021 | 久久99免费 | 四虎影视院 | 国产精品999在线 | 福利视频第一页 | 国产三级做爰高清视频a | 添人人躁日日躁夜夜躁夜夜揉 | 操人视频网站 | 最新国产三级久久 | 四虎国产精品免费入口 | 久久―日本道色综合久久 | 中文字幕一区在线观看视频 | 亚洲另类视频在线观看 | 天天操免费视频 | 婷五月天 | 97免费观看 | 国产欧美日韩精品第三区 | 久青草国产观看在线视频 | 精品国产网 | 欧美性啪啪 | 天天弄天天操 | 在线综合+亚洲+欧美中文字幕 | 成人国内精品久久久久影院 | 精品成人免费播放国产片 | 人人狠狠综合久久亚洲 | 欧美123区 | 岛国精品在线观看 | 性成人动作片在线看 | 欧美精品国产综合久久 | 超级乱淫视频播放日韩 | 精品日韩视频 | 好吊妞免费视频 | 天天操天天射天天操 |