Thanks for your help.  I've (finally) tracked down the source of my problem,
and, as I originally predicted, I'd missed something very obvious.  Instead
of naming my file ApplicationResources.properties as I should have, I had
named it ApplicationResources.Properties.  Now the question is whether I
would have ever found my mistake if I hadn't publicly humiliated myself
first. :)

-----Original Message-----
From: Fletcher, Ken [mailto:[EMAIL PROTECTED]] 
Sent: Thursday, November 01, 2001 12:15 PM
To: 'Struts Users Mailing List'
Subject: RE: Message resources


The property element in html:errors refers to the error you return from a
form's validate method (you can also do this from an Action class, but you
have to add something extra)....

the action mapping section of struts-config.xml file:
.............
<action-mappings>
    <action path="/login"
            type="action.LoginAction"
            name="loginForm"
            scope="request"
            input="/jsp/userLogin.jsp">
        <forward name="notFound" path="/jsp/userLogin.jsp"/>
    </action>
...........

...in the form's validate method:

if (loginUserID == null || loginUserID.equals("")){
ActionErrors errors = new ActionErrors();
errors.add("loginUserID", new ActionError("userID.required"));
return errors;}

...the entry in the resource properties file:

userID.required=You did not enter your user ID

...the jsp would look for the property="loginUserID":

<html:errors property="loginUserID"/>



If you do this in your Action class, be sure to add the ActionErrors object
to the request (the something extra mentioned above) before returning:

.......
ActionErrors errors = new ActionErrors();
errors.add("userNotFound", new ActionError("user.notInSystem"));
request.setAttribute("org.apache.struts.action.ERROR", errors);
return mapping.findForward("notFound");}

.....your resources file would have an entry like this:

user.notInSystem=Could not find your user ID in the System

.....the jsp looks for an error with the property="userNotFound"...

<html:errors property="userNotFound"/>

The errors.header and errors.footer are automatically added (I don't use
them, though).
I'm not sure if this will help you (hope it does)....

-----Original Message-----
From: Justin Piper [mailto:[EMAIL PROTECTED]]
Sent: Thursday, November 01, 2001 11:10 AM
To: 'Struts Users Mailing List'
Subject: RE: Message resources


I tried adding

   errors.header=<font color="red">
   errors.footer=</font>

to ApplicationResources.properties, and

   <html:errors property="error.login.password.required"/>
   <html:errors property="password"/>

to login.jsp.  I wasn't sure whether the property attribute referred to a
key in the message resources or to the name of a form element (I suspect the
latter), so I included both.  Both returned an empty string when I attempted
to submit the form without filling out the password form element.

-----Original Message-----
From: Fletcher, Ken [mailto:[EMAIL PROTECTED]] 
Sent: Thursday, November 01, 2001 10:52 AM
To: 'Struts Users Mailing List'
Subject: RE: Message resources


.......try adding a property value to your <html:errors property="whatever">

-----Original Message-----
From: Justin Piper [mailto:[EMAIL PROTECTED]]
Sent: Thursday, November 01, 2001 10:43 AM
To: Struts Users Mailing List
Subject: Message resources


I'm sure I'm missing something obvious, but after a day of trying to solve
this, I'm quite tired of beating my head against the wall.  For some reason
it seems that ActionServlet isn't able to load the message resources for my
application.  I have the following lines in my web.xml file:

   <servlet>
      <servlet-name>action</servlet-name>
      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
      <init-param>
         <param-name>application</param-name>
         <param-value>ApplicationResources</param-value>
      </init-param>
        <!-- Irrelevant lines snipped -->
      <load-on-startup>2</load-on-startup>
   </servlet>

In the /WEB-INF/classes directory, I have a file named
ApplicationResources.properties, containing the following lines:

   index.title=Index
   error.login.username.required=Username is required
   error.login.password.required=Password is required
   error.login.incorrect=Invalid username/password pair; please try again

If I include '<bean:message key="index.title"/>' in index.jsp and open it in
a web browser, I get a ServletException, "Missing message for key
index.title".  I added some debugging code to index.jsp;

   <%
      String name = "ApplicationResources.properties";
      java.net.URL url = null;
      url = this.getClass().getClassLoader().getResource(name);
      out.println("<code>url</code> is null:" +
         (new Boolean(url == null)).toString() + "<br>");
   %>
   <logic:present name="org.apache.struts.action.MESSAGE"
scope="application">
      Application resources loaded.
   </logic:present>
   <logic:notPresent name="org.apache.struts.action.MESSAGE"
scope="application">
      Application resources not loaded.
   </logic:notPresent>

which produces:

   url is null:true
   Application resources loaded.

The struts-example application functions properly, as do my ActionServlets
(though <html:errors/> always returns an empty string, even if my ActionForm
returns validation errors).  I am at a loss to explain this odd behavior,
and would appreciate any insight you could provide.

--
"Picture the sun as the origin of two intersecting 6-dimensional
hyperplanes from which we can deduce a certain transformational
sequence which gives us the terminal velocity of a rubber duck ..."


--
To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>

--
To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>

--
To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>

--
To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to