[Struts Getting Started] Actionerror and ActionMessage

xiaoxiao2021-03-06  17

ActionForm is the object of form, and the integrity check works for form data should be performed, such as whether the user fills in all the fields, whether all attributes in the ActionForm are set, you can redefine Actionform's Validate. ) methods to carry out this work, for example: package onlyfun.caterpillar; import javax.servlet.http *; import org.apache.struts.action *; public class UserForm extends ActionForm {protected String name; protected String password; public.. void setName (String name) {this.name = name;} public void setPassword (String password) {this.password = password;} public String getName () {return name;} public String getPassword () {return password;} public void reset (ActionMapping mapping, HttpServletRequest req) {name = null; password = null;} public ActionErrors validate (ActionMapping mapping, HttpServletRequest request) {ActionErrors errors = new ActionErrors (); if (getName () == null || getUsername ( ) .length () <1) {Errors.add ("name", new actionerror ("error.name.Required"); } IF (getpassword () == null || getpassword (). Length () <1) {ErrorS.Add ("password", new actionerror ("error.password.required));} return error;} When the user sends a form, and when there is a column in the form, the request will include the parameter name, but the value is a empty string, and if the ActionForm has some attributes, the form does not send the corresponding parameters, will not set The corresponding properties in ActionForm, these attributes will be null, and our validate () is primarily inspected these two situations.

The Validate () method will return Actionerror file, and ActionerRors can store the ActionError message, each ActionError will query the key-value corresponding in the resource file. When Validate () is dropped back, ActionServlet will not continue to follow. Work, but is the location set by StructS-config.xml, for example: In order to be able to Using the validate () method, must be set to true, and the input property is also necessary. When Validate () is sent back to ActionerRORS, the message is set by the Forward to the input property, the message in ActionerRRORS, We can use the tag to display, will see it will.

Actionform verifies the possibility of NULL and empty strings. This is the verification of the integrity of the data. Next, we must verify the correctness of the data, whether it meets the name and password we set, we rewrive the LoginAction of the previous theme, look any different wording: package onlyfun.caterpillar; import javax.servlet.http *; import org.apache.struts.action *; import org.apache.commons.beanutils *; public class LoginAction extends Action {public... ActionForward execute (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {String name = (String) PropertyUtils.getSimpleProperty (form, "name"); String password = (String) PropertyUtils.getSimpleProperty (form, "password" ); if ((name.equals ( "caterpillar") && password.equals ( "1234")!)) {ActionMessages messages = new ActionMessages (); messages.add (ActionMessages.GLOBAL_MESSAGE, new ActionMessage ( "message.namepass. NOTMATCHED ")); SaveMessages (Request, Messages); Return mapping.findforward ("Welcome");} else {request.getations (). setttribute ("Valid_user", Form); return mapping.findforward ("greeting");}}} In this program, we use it Org.apache.comMons.BeanUtils PropertyUtils category to help us take the value in the actionform, the advantage is not to pay attention to the real form of Actionform, and PropertyUtils will automatically help us, getSimpleProperty () is Object, we will convert to String. ActionMessages is the new category of Struts 1.1. It has become the parent category of ActionerRRORS. Similarly, ActionMessage is also a new category of Struts 1.1, which is the parent category of ActionError, the data format and integrity check In Actionform we have verified Next, we check if you meet the name and password in the action, if you do not meet, join the relevant message.

In Struts 1.1, Message is distinguished from ERROR, which is determined that the so-called error is incorrectly incorrect by the user's input in integrity or format, and Message means that the input information is basically no error, but does not match the subsequent business. deal with. In order to be able to display an error and message, we must join the key-value corresponding to the application_zh.properties, as follows: # - error - Error.name.Required = No Enter name error.password.required = No password # - Message --Message.NamePass.notmatch = Name and password incorrectly in order to use Chinese, remember to convert using the Native2ASCII tool program, let's take a look at how our Welcome.jsp is written, pay attention to it is and : <% @ Taglib Uri = "/ Tags / Struts-Bean" prefix = "bean"%> <% @ taglib uri = "/ tags / struts-html" prefix = "html"%> <% @ page contenttype = "text / html; charset = BIG5"%> <bean: message key = "welcome.title" / > </ title> <html: base /> </ head> <body bgcolor = "white> <html: errors /> <html: message ID =" messages "message =" true "> <bean: write name = "Messages" /> </ html: Messages> <h3> Please login </ h3> <html: form action = "/ login"> name: <html: Text protection = "name" size = "20" /> < Br> Password: <html: password property = "password" size = "20" /> <html: subsmit /> <html: reset /> </ html: form> </ body> </ html: html > Return Welc due to ActionForm back ActionerrorS OME.JSP, the <html: Errors /> tab displays the relevant error messages in ActionerRRORS, and we use <html: messages /> to check whether there is also an actionMessages object if there is anything and use <bean: Write /> label shows it.</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-44075.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="44075" 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.053</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 = 'FwexWYMIeHfkvNtBogmuf6A_2Br_2Bq7_2BISOhxQOIHXRiLJNj5sqEDfuaSc6Bd9BiLRRh5Yx4T_2BY1PWwChMrqVQJTQ_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>