Develop Spring MVC Applications (3-4)

xiaoxiao2021-03-06  116

l PriceInCReaseForm bean defines the controller corresponding to the form:

Ø Sessionform: Whether to enable session

Ø CommandName: Command object name, reference in the Spring tag

Ø CommistClass: Class full path for Command object

Ø Validator: Verifier class full path

Ø Formview: Table View Page

Ø SUCCESSVIEW: The view page displayed after the form is submitted (the translator: the logical name cannot be used)

l Form Controller Extension SimpleFormController, the main process is an onSubmit () method, its parameter is the specified Command object to get the data submitted by the form, then call the ProductManager's increaseprice () method to increase the price, and finally redirect to SuccessView

Package web;

Import org.springframework.web.servlet.mvc.simpleformController;

Import org.springframework.Web.Servlet.ModelandView;

Import Org.SpringFramework.Web.Servlet.View.RedirectView;

Import javax.servlet.servletException;

Import javax.servlet.http.httpservletRequest;

Import java.util.map;

Import java.util.hashmap;

Import org.apache.commons.logging.log;

Import org.apache.commons.logging.logfactory;

Import Bus.ProductManager;

Import bus.priceincrease;

Public Class PriceIncreaseformController Extends SimpleFormController {

/ ** Logger for this class and subclasses * /

Protected final log logger = logfactory.getlog (getclass ());

Private productManager product;

Public ModilandView OnSubmit (Object Command)

Throws servletexception {

INT INCREASE = (PriceInCrease) Command .GetPercentage ();

Logger.info ("Increase PriceS By" Increase "%.");

Prodman.Increaseprice (Increase);

String now = (New java.util.date ()). TOSTRING ();

Logger.info ("Returning from PriceIncreaseform View TO" GetSuccessView ()

"$ now);

Map mymodel = new hashmap ();

MyModel.Put ("now", now);

MyModel.put ("Products", getProductManager (). getProducts ()); return new modelAndview (new redirectView (getSuccessView ());

}

Protected Object FormBackingObject (httpservletRequest Request) throws servletexception {

PriceIncrease priceIncrease = new priceIncrease ();

PriceinCrease.setpercentage (20);

Return PriceinCrease;

}

Public Void SetProductManager (ProductManager PM) {

PRODMAN = PM;

}

Public productManager getProductManager () {

Return Prodman

}

}

l formBackingObject () method is back to the data to the form, and finally returns a Command object.

l In Messages.properties, add some messages used in this case:

Title = SpringApp

Heading = hello :: SpringApp

Greeting = Greetings, IT IS NOW

PriceinCrease.Heading = Price Increase :: SpringApp

Error.Not-Specified = Percentage Not Specified !!!

Error.Too-low = you have to specify a percentage higher Than {0}!

Error.Too-high = don't be greedy - you can't raise price by more more {0}%!

REQUIRED = Entry Required.

TypeMatch = INVALID DATA.

TypeMatch.Percentage = That is not a number !!!

l At the same time, add the link to the priceIncrease.jsp from Hello.jsp.

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

<fmt: message key = "title" /> </ title> </ head></p> <p><body></p> <p><h1> <fmt: message key = "Heading" /> </ h1></p> <p><p> <fmt: message key = "greeting" /> <c: out value = "$ {model.now}" /></p> <p></ p></p> <p><H3> Products </ h3></p> <p><c: foreach items = "$ {model.products}" var = "prod"></p> <p><C: out value = "$ {prod.description}" /> <i> $ <c: out value = "$ {prod.price}" /> </ i> <br> <br> </ c: Foreach></p> <p><br></p> <p><a href="<c:URL value="priceincrease.htm">> Increase Price </A></p> <p><br></p> <p></ body></p> <p></ html></p> <p>l Re-deploy the program, you can test your program.</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-126657.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="126657" 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.055</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 = 'xQrAOU4vZ3gyV2gnhYqWSaEu_2F_2FZS3cNuPmqTbZnd_2FyK83VU_2FLas9wZXr3AHtkfPveLx2uM_2BQQ8DsCrxmbr1eiw_3D_3D'; 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>