Hi, I am trying to write a logon page as discribed on the struts-example, but finding some problem with my logon.jsp when ActionLogon.java trys to return ActionErrors or ActionMessages back to the original page, the logon.jsp. I am using Struts1.1 + jboss-3.2.1_tomcat-4.1.24. I tried two ways to display the errors by using the <htlm:errors/> tag and without the tag. Can someone tell me what is going on.
Thank you in advance, Kam Lung Leung Below is the tested condictions for both situations: The first part which is without the <html:errors/> on the logon page and I only had the code listed below in the logon.jsp. <logic:messagesPresent> There were errors <font color='red' > <html:messages id="validatorMsgs" message="true" > <bean:write name="validatorMsgs"/> </html:messages> </font> </logic:messagesPresent> I tested the following conditions: 1) userName == empty string, and password == empty string (invalid format case) I got the popup window saying that User Name is required and Password is required. 2) userName == hohoho and password == empty string (invalid format case) I got the popup window saying that Password is required. 3) userName == hohoho, and password == ho (invalid format case) I got no popup window, but instead the error massage was on the same logon page saying "There were errors". I am expecting a popup window with an error message saying that password can not be less then 6 characters. 4) userName == hohoho, and password == hohoho (valid format case, but wrong password) I got either popup window nor error message on the logon page. I am especting an error message as Invalid Password for this user on the logon page. The second part which is with the <html:errors/> on the logon page and I had the code listed below in the logon.jsp. <html:errors/> <logic:messagesPresent> There were errors <font color='red' > <html:messages id="validatorMsgs" message="true" > <bean:write name="validatorMsgs"/> </html:messages> </font> </logic:messagesPresent> I tested the following conditions: 1) userName == empty string, and password == empty string (invalid format case) I got the popup windown saying that User Name is required and Password is required. 2) userName == hohoho and password == empty string (invalid format case) I got the popup windown saying that Password is required. 3) userName == hohoho, and password == ho (invalid format case) I got these messages on the logon page. Password can not be less than 6 characters. There were errors I am expecting to see the "Password can not be less than 6 characters." on the popup windown at least. 4) userName == hohoho, and password == hohoho (valid format case, but wrong password) I got either popup windown nor error message on the logon page. I am especting an error message as Invalid Password for this user on the logon page. <<<< application.property >>>> adminLogonForm.userName=User Name adminLogonForm.userName.maskmsg=The First Character Of The User Name Must Be A Letter. adminLogonForm.password=Password adminLogonForm.password.maskmsg=The First Character Of The Password Must Be A Letter. adminLogonForm.error.password=Invalid Password for this user. <<<< Here is the validation.xml file >>>>> <global> <constant> <constant-name>passwordMask</constant-name> <constant-value>^[a-zA-Z]{1}[a-zA-Z0-9_]*$</constant-value> </constant> </global> <formset> <form name="adminLogonForm"> . . <field property="password" depends="required,minlength,maxlength,mask"> <msg name="mask" key="adminLogonForm.password.maskmsg"/> <arg0 key="adminLogonForm.password"/> <arg1 name="minlength" key="${var:minlength}" resource="false"/> <arg1 name="maxlength" key="${var:maxlength}" resource="false"/> <var> <var-name>minlength</var-name> <var-value>6</var-value> </var> <var> <var-name>maxlength</var-name> <var-value>12</var-value> </var> <var> <var-name>mask</var-name> <var-value>${passwordMask}</var-value> </var> </field> </form> </formset> <<<<< struts-config.xml >>>>>>> <form-bean name="adminLogonForm" type="com.wlwa.Infra.WebComponemt.Dispatcher.Forms.AdminLogonForm" /> </form-beans> <global-forwards> <forward name="logoff" path="/adminLogoff.do"/> <forward name="logon" path="/Infra/WebComponemt/Presentation/AdminLogon.jsp"/> </global-forwards> <action path="/adminLogonSubmit" type="com.wlwa.Infra.WebComponemt.Dispatcher.Actions.AdminLogonAction" name="adminLogonForm" scope="session" validate="true" input="logon"> <forward name="success" path="/Infra/WebComponemt/Presentation/index.jsp"> /> </action> <<<<< Here is my ActionLogon.java >>>>> ActionMessages actionsMsgs = new ActionMessages(); // Validate the request parameters specified by the user String username = (String) PropertyUtils.getSimpleProperty(form,"userName"); String password = (String) PropertyUtils.getSimpleProperty(form,"password"); try { if (lookUpUser(password, username) == false) { actionsMsgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("adminLogonForm.error.password")); } } catch (Exception ex) { // Report any actionsMsgs we have discovered back to the original form actionsMsgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("adminLogonForm.error.password", ex.toString())); saveMessages(request,actionsMsgs); if (log.isDebugEnabled()) { log.debug("validation of user passwword failed for username:" +username); log.debug("End of execute "); } return (mapping.getInputForward()); } //end try-catch if (log.isDebugEnabled()) { log.debug("execute : password validation ended for user :" + username); } // Report any actionsMsgs we have discovered back to the original form if (!actionsMsgs.isEmpty()) { saveMessages(request, actionsMsgs); if (log.isDebugEnabled()) { log.debug("validation of user passwword failed for username:" + username); log.debug("End of execute "); } return (mapping.getInputForward()); } <<<< server.log >>>>> DEBUG [org.apache.commons.beanutils.ConvertUtils] Convert string 'kamhoho' to class 'java.lang.String' DEBUG [org.apache.commons.beanutils.ConvertUtils] Using converter [EMAIL PROTECTED] DEBUG [org.apache.commons.beanutils.BeanUtils] setProperty([EMAIL PROTECTED], userName, [tytyty]) DEBUG [org.apache.commons.beanutils.ConvertUtils] Convert string 'tytyty' to class 'java.lang.String' DEBUG [org.apache.commons.beanutils.ConvertUtils] Using converter [EMAIL PROTECTED] DEBUG [org.apache.struts.action.RequestProcessor] Validating input form properties DEBUG [org.apache.struts.action.RequestProcessor] No errors detected, accepting input DEBUG [org.apache.struts.action.RequestProcessor] Looking for Action instance for class com.wlwa.Infra.WebComponemt.Dispatcher.Actions.AdminLogonAction DEBUG [org.apache.struts.action.RequestProcessor] Returning existing Action instance DEBUG [com.wlwa.Infra.WebComponemt.Dispatcher.Action.AdminLogonAction] Begin of execute DEBUG [com.wlwa.Infra.WebComponemt.Dispatcher.Action.AdminLogonAction] execute : password validation ended for user : tytyty DEBUG [com.wlwa.Infra.WebComponemt.Dispatcher.Action.AdminLogonAction] End of execute DEBUG [org.apache.struts.tiles.TilesRequestProcessor] processForwardConfig(/Infra/WebComponemt/Presentation/index.jsp, false) DEBUG [org.apache.struts.tiles.TilesRequestProcessor] '/Infra/WebComponemt/Presentation/index.jsp' - processed as uri DEBUG [org.apache.struts.action.RequestProcessor] processForwardConfig(ForwardConfig[name=success,path=/Infra/WebComponemt/Presentation/index.jsp,redirect=false,contextRelative=false]) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]