FormBean question...

2003-09-16 Thread alanbrown
I am using 2 different beans to populate 2 forms on 2 pages.  However
some of the fields have the same names, as both customers and contacts
have addresses and both companies and contacts have descriptions and
notes associated with them.  After entering a company the user is
prompted to enter some details of a person within that company with,
hopefully, some of the form already filled out (the address fields have
default values for instance taken from the company info that was just
entered).  However the description field and the notes field are also
filled out with the values entered in the addCompany.jsp page and this
should not happen.
 
This seems very strange as I've got 2 different formBeans used to
populate the fields.  Here are the relevant parts of the strutsconfig
file.
 
form-bean
name=companyForm
type=com.alan.crm.forms.CompanyForm
/form-bean
form-bean
name=contactForm
type=com.alan.crm.forms.ContactForm
/form-bean
 
and.
 
action
path=/addCompany
type=com.alan.crm.controller.AddCompanyAction
scope=request
name=companyForm
validate=true
input=/add/company.jsp
forward name=Success path=/addContactView.do/
forward name=Failure path=/add/company.jsp/
/action
action
path=/addContactView
type=com.alan.crm.controller.PrepareAddContactAction
scope=request
name=contactForm
validate=false
forward name=next path=/add/contact.jsp/
/action
 
As you can see they are using different types of form so I find it very
odd that the description and note fields are pre populated as well as
the address.  The way I've tried to populate the fields I want
pre-polulated is by having the following code at the end of my
addCompanyAction class
 
ContactForm contactForm = new ContactForm(new
Integer(companyId).toString(), companyForm.getAddress());
request.setAttribute(addContactForm, contactForm);
return mapping.findForward(Success);
 
and then, when forwarded to the prepareAddContactAction class, have the
following code.
 
public ActionForward executeAction(ActionMapping mapping,
   ActionForm form,
   HttpServletRequest request,
   HttpServletResponse response,
   UserContainer container) {
ContactForm contactForm =
(ContactForm)request.getAttribute(addContactForm);
//if addContactForm is not null in the request scope then we
should use it to populate our form.
form = contactForm == null? form : contactForm;
((ContactForm)form).setContactStatus(open);
return mapping.findForward(next);
   }
 
But somehow I'm getting all the companyForm's fields populating the
contact form.   IE. I put a company description in the addCompany jsp
and it shows up as a contact description in the addContact jsp, and I
don't pass the description field to the contactForm.
 
Is there something I'm not understanding about the struts architecture?
 
Help is, of course, greatly appreciated.
 
alan



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



RE: FormBean question...

2003-09-16 Thread alanbrown
Really?  That seems strange.  I thought that the reason we name the
formbean in the strutsconfig file is so struts knows which bean it is
using to populate the form fields.  Am I mistaken in that?  How does
Struts decide which bean is being used to populate the fields?  I've
specifically replaced the Form in the Action class that prepares the
form so it contains the values I want.  But Struts seems to ignore those
values and use the ones in the bean from the last page I used.

I've looked into the generated java file that struts produces and I find
this (which sheds no light on anything as far as I'm concerned...

Here is the code that is laying out the Html for the description
field...

  out.write(td valign=\middle\ align=\left\\r\n
);
if (_jspx_meth_html_textarea_0(_jspx_th_html_form_0,
pageContext))
  return true;
out.write(\r\n);

and here is the method that's referred to

private boolean _jspx_meth_html_textarea_0(javax.servlet.jsp.tagext.Tag
_jspx_th_html_form_0, javax.servlet.jsp.PageContext pageContext)
  throws Throwable {
JspWriter out = pageContext.getOut();
/*   html:textarea  */
org.apache.struts.taglib.html.TextareaTag _jspx_th_html_textarea_0 =
(org.apache.struts.taglib.html.TextareaTag)
_jspx_tagPool_html_textarea_rows_property_cols.get(org.apache.struts.tag
lib.html.TextareaTag.class);
_jspx_th_html_textarea_0.setPageContext(pageContext);
_jspx_th_html_textarea_0.setParent(_jspx_th_html_form_0);
_jspx_th_html_textarea_0.setProperty(description);
_jspx_th_html_textarea_0.setCols(60);
_jspx_th_html_textarea_0.setRows(3);
int _jspx_eval_html_textarea_0 =
_jspx_th_html_textarea_0.doStartTag();
if (_jspx_th_html_textarea_0.doEndTag() ==
javax.servlet.jsp.tagext.Tag.SKIP_PAGE)
  return true;
 
_jspx_tagPool_html_textarea_rows_property_cols.reuse(_jspx_th_html_texta
rea_0);
return false;
  }

I don't see where the value is getting loaded into this field or where
it might be coming from.  I've searched through the file for any
setValue() methods but there aren't any (I thought there might be based
on the javadocs).

Can anyone explain what happens behind the scenes when I'm trying to
direct struts to discard the old formbean and use a new one in my
preparatory Action class?

alan


-Original Message-
From: Mainguy, Mike [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, September 16, 2003 4:35 AM
To: 'Struts Users Mailing List'
Subject: RE: FormBean question...

This is by design.  If you want to ensure this will not happen, you need
to
set all the values to  or null beforehand for fields that should be
empty.
The short answer is change the field name.  Especially if you are
going to
store data in a form in the session you will have a big mess on your
hands
if you have overlapping field names in multiple forms.

My $.02...


-Original Message-
From: alanbrown [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, September 16, 2003 2:18 AM
To: [EMAIL PROTECTED]
Subject: FormBean question...


I am using 2 different beans to populate 2 forms on 2 pages.  However
some
of the fields have the same names, as both customers and contacts have
addresses and both companies and contacts have descriptions and notes
associated with them.  After entering a company the user is prompted to
enter some details of a person within that company with, hopefully, some
of
the form already filled out (the address fields have default values for
instance taken from the company info that was just entered).  However
the
description field and the notes field are also filled out with the
values
entered in the addCompany.jsp page and this should not happen.
 
This seems very strange as I've got 2 different formBeans used to
populate
the fields.  Here are the relevant parts of the strutsconfig file.
 
form-bean
name=companyForm
type=com.alan.crm.forms.CompanyForm
/form-bean
form-bean
name=contactForm
type=com.alan.crm.forms.ContactForm
/form-bean
 
and.
 
action
path=/addCompany
type=com.alan.crm.controller.AddCompanyAction
scope=request
name=companyForm
validate=true
input=/add/company.jsp
forward name=Success path=/addContactView.do/
forward name=Failure path=/add/company.jsp/
/action
action
path=/addContactView
type=com.alan.crm.controller.PrepareAddContactAction
scope=request
name=contactForm
validate=false
forward name=next path=/add/contact.jsp/
/action
 
As you can see they are using different types of form so I find it very
odd
that the description and note fields are pre populated as well as the
address.  The way I've tried to populate the fields I want pre-polulated
is
by having the following code at the end of my addCompanyAction class

RE: FormBean question...

2003-09-16 Thread alanbrown
And it's stranger than that also.  If I come to the addContact page From
the addCompany page then any fields I pre-fill in my addContactForm bean
are ignored.  But if I come directly to the addContact page then the
prefilled fields are as I'd expect.  It's as though I can't change the
formBean that's being used by struts once it's placed in request scope.
That is to say that once the addCompanyForm bean is used to add the
company to the database, I don't appear able to replace it with an
addContactForm bean to populate the fields I want to populate.





-Original Message-
From: alanbrown [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, July 16, 2003 10:55 AM
To: 'Struts Users Mailing List'
Subject: RE: FormBean question...

Really?  That seems strange.  I thought that the reason we name the
formbean in the strutsconfig file is so struts knows which bean it is
using to populate the form fields.  Am I mistaken in that?  How does
Struts decide which bean is being used to populate the fields?  I've
specifically replaced the Form in the Action class that prepares the
form so it contains the values I want.  But Struts seems to ignore those
values and use the ones in the bean from the last page I used.

I've looked into the generated java file that struts produces and I find
this (which sheds no light on anything as far as I'm concerned...

Here is the code that is laying out the Html for the description
field...

  out.write(td valign=\middle\ align=\left\\r\n
);
if (_jspx_meth_html_textarea_0(_jspx_th_html_form_0,
pageContext))
  return true;
out.write(\r\n);

and here is the method that's referred to

private boolean _jspx_meth_html_textarea_0(javax.servlet.jsp.tagext.Tag
_jspx_th_html_form_0, javax.servlet.jsp.PageContext pageContext)
  throws Throwable {
JspWriter out = pageContext.getOut();
/*   html:textarea  */
org.apache.struts.taglib.html.TextareaTag _jspx_th_html_textarea_0 =
(org.apache.struts.taglib.html.TextareaTag)
_jspx_tagPool_html_textarea_rows_property_cols.get(org.apache.struts.tag
lib.html.TextareaTag.class);
_jspx_th_html_textarea_0.setPageContext(pageContext);
_jspx_th_html_textarea_0.setParent(_jspx_th_html_form_0);
_jspx_th_html_textarea_0.setProperty(description);
_jspx_th_html_textarea_0.setCols(60);
_jspx_th_html_textarea_0.setRows(3);
int _jspx_eval_html_textarea_0 =
_jspx_th_html_textarea_0.doStartTag();
if (_jspx_th_html_textarea_0.doEndTag() ==
javax.servlet.jsp.tagext.Tag.SKIP_PAGE)
  return true;
 
_jspx_tagPool_html_textarea_rows_property_cols.reuse(_jspx_th_html_texta
rea_0);
return false;
  }

I don't see where the value is getting loaded into this field or where
it might be coming from.  I've searched through the file for any
setValue() methods but there aren't any (I thought there might be based
on the javadocs).

Can anyone explain what happens behind the scenes when I'm trying to
direct struts to discard the old formbean and use a new one in my
preparatory Action class?

alan


-Original Message-
From: Mainguy, Mike [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, September 16, 2003 4:35 AM
To: 'Struts Users Mailing List'
Subject: RE: FormBean question...

This is by design.  If you want to ensure this will not happen, you need
to
set all the values to  or null beforehand for fields that should be
empty.
The short answer is change the field name.  Especially if you are
going to
store data in a form in the session you will have a big mess on your
hands
if you have overlapping field names in multiple forms.

My $.02...


-Original Message-
From: alanbrown [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, September 16, 2003 2:18 AM
To: [EMAIL PROTECTED]
Subject: FormBean question...


I am using 2 different beans to populate 2 forms on 2 pages.  However
some
of the fields have the same names, as both customers and contacts have
addresses and both companies and contacts have descriptions and notes
associated with them.  After entering a company the user is prompted to
enter some details of a person within that company with, hopefully, some
of
the form already filled out (the address fields have default values for
instance taken from the company info that was just entered).  However
the
description field and the notes field are also filled out with the
values
entered in the addCompany.jsp page and this should not happen.
 
This seems very strange as I've got 2 different formBeans used to
populate
the fields.  Here are the relevant parts of the strutsconfig file.
 
form-bean
name=companyForm
type=com.alan.crm.forms.CompanyForm
/form-bean
form-bean
name=contactForm
type=com.alan.crm.forms.ContactForm
/form-bean
 
and.
 
action
path=/addCompany
type=com.alan.crm.controller.AddCompanyAction
scope=request
name=companyForm

Printing individual errors...

2003-09-15 Thread alanbrown
Rather than print the whole set of errors at the top of the page I'd
like to print each error next to the field that generated it.  My
problem is that when using the html:errors property=XXX tag I find
that the errors.header and errors.prefix values are prepended to each
error and the errors.suffix and errors.suffix are appended to each
error.  This seems a little odd.  I would have expected the prefix and
suffix values to be there, but not the header and footer which don't
seem appropriate next to each error.  
 
I imagined that the header and footer values would be at the beginning
and end of a list of errors and the prefix and suffix values would be
after each error.  
 
Is there a simple way around this or am I committed to having empty
errors.header and errors.footer values?
 
alan



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