Nadia,

Are you sure you have the 3 important pieces?

A) a struts-config.xml (or module) define message resources file?  Mine is
the file WEB-INF/classes/application.properties, which contains the line:

errors.required={0} is required.

My struts-config.xml includes this resource with the line:
<message-resources parameter="application" null="true" />

B) Have you put a 'default' error message in your ActionForm's validate()
method for testing purposes so your method does not end with:
        return(errors);

but with:
        errors.add("countryName", new ActionError("errors.required","Country
Name"));
        return(errors);

C) You have JSP Code like this:

<logic:messagesPresent>
<ul>
        <html:messages id="error">
                <li><bean:write name="error"/></li>
        </html:messages>
</ul>
</logic:messagesPresent>

I got this to work but only AFTER I made sure I had step A configured
properly.

Since you used property key names when you added each error instead of using
the Globals.ERROR key, a.k.a. the string "error".  You added each item under
keys like "countryName" and "countryCapital" so you could access them
individually like this:

<logic:messagesPresent>
<ul>
        <html:messages id="error" property="countryName">
                <li><bean:write name="error"/></li>
        </html:messages>
</ul>
</logic:messagesPresent>

AND

<logic:messagesPresent>
<ul>
        <html:messages id="error" property="countryCapital">
                <li><bean:write name="error"/></li>
        </html:messages>
</ul>
</logic:messagesPresent>

Regards,
David

-----Original Message-----
From: Nadia Kunkov [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 13, 2004 1:20 PM
To: Struts Users Mailing List
Subject: RE: Newbie <html:errors/> never displays errors


Nooo...  I guess that's it!
I thought you need to call saveErrors only when you create ActionErrors
inside Action and not in Validate...
Here is my Action  (I'm using DispatchAction):

public ActionForward Add (ActionMapping actionMapping, ActionForm
actionForm,
                                        HttpServletRequest req,
                                        HttpServletResponse res)
        throws Exception
        {

                javax.sql.DataSource dataSource;

                dataSource = (DataSource)
servlet.getServletContext().getAttribute(org.apache.struts.Globals.DATA_SOUR
CE_KEY);
                CountryService countryService = new CountryService();
                CountryDTO country = new CountryDTO();
                BeanUtils.copyProperties( country,(AddCountryNewForm) actionForm);
                countryService.addCountry(country,dataSource);

        return actionMapping.findForward("newcountrylisting");
        }


Where do I save the errors generated by the validate?

Thanks

-----Original Message-----
From: David G. Friedman [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 13, 2004 1:10 PM
To: Struts Users Mailing List
Subject: RE: Newbie <html:errors/> never displays errors


Did you call saveErrors() or saveMessages() in your Action to save the
messages into the (request) scope for use in the JSP?

-----Original Message-----
From: Nadia Kunkov [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 13, 2004 12:59 PM
To: Struts Users Mailing List
Subject: RE: Newbie <html:errors/> never displays errors


Yes, here is what I tried:

<logic:messagesPresent>
           <ul>
           <html:messages id="error" name="countryName">
              <li><bean:write name="error"/></li>
           </html:messages>
           </ul>
        </logic:messagesPresent>

I get an error: can't find bean "error" in any scope :(
This drives me nuts.
Thanks for helping me.

-----Original Message-----
From: David G. Friedman [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 13, 2004 12:56 PM
To: Struts Users Mailing List
Subject: RE: Newbie <html:errors/> never displays errors


Nadia,

The bean:write's name attribute must match the id parameter of the
html:messages tag. That's why I suggested your html:messages tag be:

  <html:messages id="error" name="countryName">

This means it should pull the errors from the area "countryName" and present
them for the bean:write tag to use as the name "error" (see id="..").  Have
you tried this yet?

Regards,
David

-----Original Message-----
From: Nadia Kunkov [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 13, 2004 12:46 PM
To: Struts Users Mailing List
Subject: RE: Newbie <html:errors/> never displays errors


Here is my jsp:
  ......
.....
<form:submit property="method" value="Add"></form:submit>
</form:form>

<logic:messagesPresent>
<ul>
<html:messages id="error" >
<li><bean:write name="countryName"/></li>
</html:messages>
</ul>
</logic:messagesPresent>

</body>
</html:html>

Thanks for your help

-----Original Message-----
From: David G. Friedman [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 13, 2004 12:35 PM
To: Struts Users Mailing List
Subject: RE: Newbie <html:errors/> never displays errors


Please show your JSP code.  I think this should have worked:

<logic:messagesPresent>
           <ul>
           <html:messages id="error" name="countryName">
              <li><bean:write name="error"/></li>
           </html:messages>
           </ul>
        </logic:messagesPresent>

Remember, the "id" is essentially the key you give to the bean:write but the
name="" attribute is what messages key to retrieve.  That name="" attribute
defaults to the global errors word if you don't specify anything else.

Regards,
David

-----Original Message-----
From: Nadia Kunkov [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 13, 2004 12:31 PM
To: Struts Users Mailing List
Subject: RE: Newbie <html:errors/> never displays errors


Thanks
Did that and specified the write bean name this time.
<li><bean:write name="countryName"/></li>
Now I get an error that bean countryName doesn't exist in any scope.
I get a feeling it's something with my message resources.

How can I see that the following line works.
errors.add("countryName", new ActionError("errors.required","Country
Name"));

Thanks
Nadia

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 13, 2004 11:32 AM
To: [EMAIL PROTECTED]
Subject: RE: Newbie <html:errors/> never displays errors


Hi Nadia,
        Use this to write your message :

        <logic:messagesPresent>
           <ul>
           <html:messages id="error">
              <li><bean:write name="error"/></li>
           </html:messages>
           </ul>
        </logic:messagesPresent>

<bean:write> will write error message who are call in your validate method
and <logic:messagesPresent> will check if these message are present.

                                Charles Gouin-Vallerand

-----Original Message-----
From: Nadia Kunkov [mailto:[EMAIL PROTECTED]
Sent: October 13, 2004 11:16 AM
To: Struts help (E-mail)
Subject: Newbie <html:errors/> never displays errors


Hi,

I have gone through multiple postings and followed the suggestions about
displaying the errors.  I just need another pair of eyes to look at this,
I'm probably missing something.

I can't display errors on the page.  I know that I go through the validate
method and it finds errors because I'm not moving to the next page when I do
a submit.  If I have an error I want to stay on the same page and let the
user resubmit.  I do stay on the same page but under the form I want error
messages to be displayed and they are never there.  Please take a look
below.

I have this in my MyAppResources.properties which resides in
/WEB-INF/classes directory
errors.required={0} is required.

in my struts-config.xml I have
validate="true"

and also
<message-resources
        parameter="MyAppResources"
        null="false"/>

In my ActionForm I have the following in the Validate method:

public ActionErrors validate (ActionMapping actionMapping,
HttpServletRequest httpServletRequest)
        {
                ActionErrors errors = new ActionErrors();
                if (getCountryName() == null || getCountryName().length() <
1)
                {
                        errors.add("countryName", new
ActionError("errors.required","Country Name"));
                }
                if (getCountryCapital() == null ||
getCountryCapital().length() < 1)
                {
                        errors.add("countryCapital", new
ActionError("errors.required","Country Capital"));
                }
                return errors;
        }


In my jsp file I have the following
.....some stuff......

<form:submit property="method" value="Add"></form:submit>
</form:form>
        <html:errors/>
</body>
</html:html>



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

Reply via email to