Example of Webwork2 and Springframework Integration (Original) (5-1)

xiaoxiao2021-03-06  76

5, implement form interaction

(1) Auxiliary Action: PriceIncReaseform

Package web;

Import org.apache.commons.logging.log;

Import org.apache.commons.logging.logfactory;

Import bus.priceincrease;

Import com.opensymphony.xwork.actionsupport;

Public class priceIncreaseform extends actionSupport {

/ ** Logger for this class and subclasses * /

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

Private priceIncrease priceincrease;

Public String Execute () throws exception {

PriceinCrease = new priceIncrease ();

PriceinCrease.setpercentage (20);

Logger.info ("Show PriceInCrease Form.");

RETURN SUCCESS;

}

Public PriceInCrease getPriceIncRease () {

Return PriceinCrease;

}

Public void setPriceIncrease (PriceIncrease PriceIncrease) {

this.priceincrease = priceIncrease;

}

}

l WebWork2 does not provide SimpleFormController mechanisms similar to Spring MVC Framework, which cannot be automatically oriented to form views, so use the auxiliary PriceInCreaseform class to redirect (who has a better way?)

l Here, use the PriceInCrease object to encapsulate the form of single field elements, and initialize in Execute ().

l PriceIncReaseform The configuration in xwork.xml is as follows:

Class = "Web.PriceIncReaseform">

/ web-inf / jsp / priceIncrease.jsp

(2) Table view page: PriceinCrease.jsp

<% @ Taglib Uri = "Webwork" prefix = "ww"%>

<ww: text name = "'title'" /> </ title> </ head></p> <p><body></p> <p><h1> <ww: text name = "'priceincrease.Heading'" /> </ h1></p> <p><form action = "priceIncrease.action" method = "post"> <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><TD Width = "20%"></p> <p><Input Type = "text" name = "priceIncrease.percentage" value = "<ww: proty value =" PriceIncrease.Percentage "/>>"></p> <p></ td></p> <p><td width = "60%"></p> <p><ww: iperator value = "FielderRRors.get ('priceIncrease.percentage"> "></p> <p><font color = "red"> <ww: property /> </ font></p> <p></ ww: iperator></p> <p></ td></p> <p></ TR></p> <p></ TABLE></p> <p><br></p> <p><ww: if test = "FielderRRORS.SIZE ()> 0"></p> <p><b> please fix all errors! </ b></p> <p></ ww: if></p> <p><br> <br></p> <p><Input Type = "Submit" alignment = "center" value = "execute"></p> <p></ form></p> <p><a href="springapp.action"> Home </A></p> <p></ body></p> <p></ html></p> <p>l Use the action property in the <form> tag to specify the URL mode of the Action class for processing form data.</p> <p>l The Name property of the table single domain element is consistent with the attribute name in the Action class, so that the value of the table single field element can be set to the corresponding attribute.</p> <p>l Here, this is a pricrese, and it is an properties in the Action class. The value of the table field element is set to the value of the PriceIncrease of the PriceInCrease by setting the Name property of the table single domain element.</p> <p>l Recommended: Use data object to encapsulate data of single field elements, so as long as the reference to which the object is provided in the Action class; then specify the Name property of the table single field element using ObjectName.PropertyName</p> <p>l Election value of the input value uses <ww: property> tag</p> <p>l FielderRors is an built-in object that represents an error message collection that is invalidated in the table.</p> <p>(3) Using the Velocity implementation form view: priceIncrease.vm <html></p> <p><head> <title> $ action.gettext ('title') </ title> </ head></p> <p><body></p> <p><H1> $ action.gettext ('priceIncrease.Heading') </ h1></p> <p><form action = "priceIncrease.action" method = "post"></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><TD Width = "20%"></p> <p><Input Type = "text" name = "priceincrease.percentage" value = "$! priceincrease.percentage"></p> <p></ td></p> <p><td width = "60%"></p> <p>#foreach ($ PercentageError In $ Fielderrors.get ('priceIncrease.Percentage'))</p> <p><font color = "red"> $ percentagerror </ font></p> <p>#end</p> <p></ td></p> <p></ TR></p> <p></ TABLE></p> <p><br></p> <p>#if ($ FIELDERRORS.SIZE ()> 0)</p> <p><b> please fix all errors! </ b></p> <p>#end</p> <p><br> <br></p> <p><Input Type = "Submit" alignment = "center" value = "execute"></p> <p></ form></p> <p><a href="springapp.action"> Home </A></p> <p></ body></p> <p></ html></p> <p>l In the Velocity template file, the variable is to start with $, so add $ with FielderRors.</p> <p>L $! PriceinCrease.Percentage is more special, mainly to eliminate Velocity parsing objections, if you use $ PriceInCrease.Percentage, Velocity will not resolve, will be displayed directly in text fields</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-121906.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="121906" 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.030</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 = 'IiDY95ngPvRQBaFEvh_2Bf7BD9XCvX3SUXKzbkv_2Fm1BNzfN2Lp8f7lX9Lg4dPjAWNXW5zBRtr7jvdJMqpJ'; 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>