Develop Spring MVC Applications (3-2)

xiaoxiao2021-03-06  116

(22) Add a form

l Add a form that allows users to enter percentage. Since the Spring tag is used in the form, the Dist / Spring.TLD is imported into the SpringApp / Web-INF directory and add entry in Web.xml.

/ Spring

/web-inf/spring.tld

l In the form page priceIncrease.jsp, define a form that contains an input to add a percentage of text fields and submitting buttons.

<% @ include file = "/ web-inf / jsp / incrude.jsp"%>

<% @ taglib prefix = "Spring" URI = "/ Spring"%>

<fmt: message key = "title" /> </ title> </ head></p> <p><body></p> <p><h1> <fmt: message key = "priceincrease.Heading" /> </ h1></p> <p><form method = "pos"></p> <p><table width = "95%" BGColor = "f8f8ff" border = "0" cellspacing = "0" cellpadding = "5"></p> <p><tr></p> <p><TD alignment = "Right" width = "20%"> increase (%): </ td></p> <p><Spring: Bind Path = "PriceIncrease.Percentage"></p> <p><TD Width = "20%"></p> <p><Input Type = "text" name = "percentage" value = "<c: out value =" $ {status.value} "/>"></p> <p></ td></p> <p><td width = "60%"></p> <p><font color = "red"> <c: out value = "$ {status.errorMessage}" /> </ font></p> <p></ td></p> <p></ spring: bind></p> <p></ TR></p> <p></ table></p> <p><br></p> <p><Spring: HasbinderRors Name = "PriceInCrease"></p> <p><b> please fix all errors! </ b></p> <p></ Spring: HasbinderRors></p> <p><br> <br></p> <p><Input Type = "Submit" alignment = "center" value = "execute"> </ form></p> <p><a href="<c:URL value="hello.htm">> Home </a></p> <p></ body></p> <p></ html></p> <p>l <spring: bind> Binding text fields to the properties of the Command object (later introduction) (specified by the Path property), status.value variable indicates the value of the binding property, the status.errorMessage variable indicates the error message returned when the error is verified.</p> <p>l <Spring: HasbinderRRORS> Binding error to the specified object (specified by the Name property)</p> <p>l Command object is a simple JavaBean, passed to the validator, if verified, then pass to the controller</p> <p>Package bus;</p> <p>Import org.apache.commons.logging.log;</p> <p>Import org.apache.commons.logging.logfactory;</p> <p>Public class priceincrease {</p> <p>/ ** Logger for this class and subclasses * /</p> <p>Protected final log logger = logfactory.getlog (getclass ());</p> <p>Private int initage;</p> <p>Public void setpercentage (int i) {</p> <p>Percentage = i;</p> <p>Logger.info ("Percentage Set To" i);</p> <p>}</p> <p>Public int getpercentage () {</p> <p>Return percentage;</p> <p>}</p> <p>}</p> <p>l When the user submits the form, the data of the form is set to the Command object, and the verifier is called for data validity verification.</p> <p>Package bus;</p> <p>Import org.springframework.validation.validator;</p> <p>Import org.springframework.validation.errors;</p> <p>Import org.apache.commons.logging.log;</p> <p>Import org.apache.commons.logging.logfactory;</p> <p>Public Class PriceSevalValidator Implements Validator {</p> <p>PRIVATE INT Default_min_Percentage = 0;</p> <p>PRIVATE INT Default_max_percentage = 50;</p> <p>Private Int minpercentage = default_min_percentage;</p> <p>Private int maxpercentage = default_max_percentage;</p> <p>/ ** Logger for this class and subclasses * /</p> <p>Protected final log logger = logfactory.getlog (getclass ());</p> <p>Public Boolean Supports (Class Clazz) {</p> <p>Return Clazz.equals (PriceIncrease.class);</p> <p>}</p> <p>Public void validate (Object obj, errors errors) {PriceIncRease Pi = (PriceIncrease) OBJ;</p> <p>IF (pi == null) {</p> <p>Errors.rejectValue ("Percentage", "Error.Not-Specified", NULL, "Value Required.");</p> <p>}</p> <p>Else {</p> <p>Logger.info ("Validating with" PI ":" Pi.GetPercentage ());</p> <p>IF (Pi.GetPercentage ()> maxpercentage) {</p> <p>Errors.rejectValue ("Percentage", "Error.Too-high",</p> <p>New Object [] {new integer (maxpercentage)}, "Value Too High.");</p> <p>}</p> <p>IF (Pi.GetPercentage () <= minpercentage) {</p> <p>Errors.rejectValue ("Percentage", "Error.Too-Low",</p> <p>New Object [] {new integer (minpercentage)}, "value to low.");</p> <p>}</p> <p>}</p> <p>}</p> <p>Public void setminpercentage (INT i) {</p> <p>MinPercentage = i;</p> <p>}</p> <p>Public int getminpercenetage () {</p> <p>Return minpersCentage;</p> <p>}</p> <p>Public void setMaxpercentage (int i) {</p> <p>Maxpercentage = i;</p> <p>}</p> <p>Public int getMaxPercentage () {</p> <p>Return Maxpercentage;</p> <p>}</p> <p>}</p> <p>l The verifier implements the Validator interface, which has two methods:</p> <p>Ø Supports (): Decide if the object specified can verify</p> <p>Ø Validate (): Implement the validation object, provide two parameters, one is the verification object, one is an error message we build the error message related to the domain property; error message can be obtained using the Status.ErrorMessage variable introduced earlier</p> <p>l Errors object's rejectValue () method is used to pop up the specified error description of the verification object specified domain properties, which contains four parameters: property name, message key value (defined in the property file), message parameters (providing dynamic messages) and Default message</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-126659.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="126659" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.044</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = 'NWe_2FaoXHTg6C5BObf_2FnkNBOa2_2BbarHh90bTkMDXO2HLXoFbslaSanYD_2FRFfzACblKfY0eak4tjGR_2BCnF'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>