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

Spring MVC 復雜表單分部提交--使用AbstractWiz

系統(tǒng) 2038 0

如果我們的表單有很多的輸入選項,如果都放置在一個頁面上,會導致頁面過多,如果我們能把這些輸入分散到幾個頁面上,按向?qū)У姆绞教顚懀谧詈笠豁撋线M行提交,勢必會帶來良好的可操作性,使用Spring MVC 架構(gòu)中的AbstractWizardFormController控制器,可以很輕松的完成以上功能

(1)配置文件:web.xml?

?

<? xml?version="1.0"?encoding="UTF-8" ?>
< web-app? version ="2.4" ?
????xmlns
="http://java.sun.com/xml/ns/j2ee" ?
????xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" ?
????xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee?
????http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
??
< context-param >
????
< param-name > contextConfigLocation </ param-name >
????
< param-value > /WEB-INF/train-servlet.xml </ param-value >
??
</ context-param >
??
< servlet >
????
< servlet-name > train </ servlet-name >
????
< servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class >
????
< load-on-startup > 0 </ load-on-startup >
??
</ servlet >
??
< servlet-mapping >
?????
< servlet-name > train </ servlet-name >
?????
< url-pattern > *.mvc </ url-pattern >
??
</ servlet-mapping >

???
< listener >
?????
< listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >
???
</ listener >
????
??
< filter >
????
< filter-name > character </ filter-name >
????
< filter-class > Action.CharacterFilter </ filter-class >
??
</ filter >
??
< filter-mapping >
????
< filter-name > character </ filter-name >
????
< url-pattern > /* </ url-pattern >
??
</ filter-mapping >
??
< welcome-file-list >
????
< welcome-file > index.jsp </ welcome-file >
??
</ welcome-file-list >
</ web-app >

?

(2)控制器類

?? 其中successView是最后表單提交成功后的回顯頁面,由spring注入
?????????? cancelView是中途取消提交過程后的返回頁面,由spring注入
?????????? vote為我們表單對應的javabean
???
???????? 繼承了AbstractWizardFormController,所以必須實現(xiàn)他的abstract mothed---processFinish。也就是說,若果繼承了AbstractWizardFormController,你僅需要實現(xiàn)這個方法。當所有的頁面表單填寫完將調(diào)用這個方法。 processCancel方法不是必須實現(xiàn)的,他是在你填寫某一步表單時想取消,按取消按鈕時調(diào)用。

package ?Action;

import ?java.util.Enumeration;

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

import ?model.Vote;

import ?org.springframework.validation.BindException;
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;
????
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?arg0,?HttpServletResponse?arg1,?Object?arg2,?BindException?arg3)? 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);
????}


}

JavaBean:

package ?model;
public ? class ?Vote? ... {
???
private ?String?id;
???
private ?String?name;
???
private ?String?option;
???
private ?String?result;
public ?String?getId()? ... {
????
return ?id;
}

public ? void ?setId(String?id)? ... {
????
this .id? = ?id;
}

public ?String?getName()? ... {
????
return ?name;
}

public ? void ?setName(String?name)? ... {
????
this .name? = ?name;
}

public ?String?getOption()? ... {
????
return ?option;
}

public ? void ?setOption(String?option)? ... {
????
this .option? = ?option;
}

public ?String?getResult()? ... {
????
return ?result;
}

public ? void ?setResult(String?result)? ... {
????
this .result? = ?result;
}
?
}

?

配置文件:

?

< bean? id ="simpleUrlMapping" ?class ="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
?
< property? name ="mappings" >
???
< props >
?????
< prop? key ="/feedback.mvc" > FeedbackController </ prop >
?
???
</ props >
?
</ property >
</ bean >



<!-- ?使用AbstractWizardFormController控制器? -->
< 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="pages">
????<list>??<!---此處定義表單向?qū)У捻撁媪黜樞颍獓栏駡?zhí)行這里配置的順序->
??????<value>formWizard/first</value>
??????<value>formWizard/id</value>
??????<value>formWizard/name</value>
??????<value>formWizard/option</value>
??????<value>formWizard/result</value>
????</list>
??</property>
</bean>


<bean?id="viewResolver"?class="org.springframework.web.servlet.view.InternalResourceViewResolver">
??<property?name="prefix">
????<value>/</value>
??</property>
??<property?name="suffix">
????<value>.jsp</value>
??</property>
</bean>

我們執(zhí)行feedback.mvc時候,默認首先訪問第一順位的頁面first.jsp

first.jsp:

?

<% ... @?page?language = " java " ?contentType = " text/html;?charset=GB18030 "
????pageEncoding
= " GB18030 "
%>
<! DOCTYPE?html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
< meta? http-equiv ="Content-Type" ?content ="text/html;?charset=GB18030" >
< title > Insert?title?here </ title >
</ head >
< body >
< FORM? action ="feedback.mvc" ?method ="post" >
?
< TABLE >
??
< TBODY >

Spring MVC 復雜表單分部提交--使用AbstractWizardFormController解決方案


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 黄色的视频免费观看 | 日本黄视频在线观看 | 成人在线视频网站 | 成人在线免费 | 一区二区高清视频 | 免费在线成人 | 国产伦精品一区二区三区精品视频 | 在线精品国内外视频 | 性欧美18一19sex性高清播放 | 久久久一区二区三区不卡 | 精品免费视频 | 精品国产九九 | 免费久久精品国产片香蕉 | 欧美日韩精品一区二区在线线 | 色播欧美| 国产成人精品免费久久久久 | 国产午夜精品久久久久久久蜜臀 | 一国产一级淫片a免费播放口 | 色呦呦免费观看 | 青草视频网| 中文字幕av一区 | 亚洲国产精品久久婷婷 | 日本叼嘿视频 | 久操免费视频 | 大吊一区二区 | 国产精品久久久久久喷浆 | 午夜在线观看cao | 看片一区| 九九热观看视频 | 99国产精品2018视频全部 | 99久久免费国产精品 | 亚洲性69影院在线观看 | 精品久久久久久久久久 | 999www视频免费观看 | 久久狠狠一本精品综合网 | 国产成人福利视频在线观看 | 96国产精品久久久久aⅴ四区 | 波多野结衣办公室33分jian情 | 岛国一区 | 日本视频一区在线观看免费 | 国产精品欧美精品 |