struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "John Greenhill" <jgreenh...@dayspring-tech.com>
Subject RE: what setters do i implementinan indexedtag--NewBiequestion
Date Fri, 13 Jun 2003 16:16:12 GMT
Setting the hidden without scriptlets is simply <html:hidden
property="personListLength" />

You should get familiar with this page:

	http://jakarta.apache.org/struts/userGuide/struts-html.html

which will show you all the struts tags to generate the html elements
like inputs etc.

I don't think this is the proplem regarding the missing data on
validation return, but I'm still suspicicious of your javascript making
the new row. After you add a row with the button, do a view source on
the resultant page and tell me, is the name of the input fields of the
new row similar in format to the previous indexed fields?

(i.e. something like person[0].firstName, person[1].phoneNo, etc)

-john


-----Original Message-----
From: Sashi Ravipati [mailto:RavipatiS@michigan.gov]
Sent: Friday, June 13, 2003 5:13 AM
To: struts-user@jakarta.apache.org
Subject: RE: what setters do i implementinan indexedtag--NewBiequestion


No returning from Validation does not work even when I did not add the
new row. This is what is confusing me.

Even I want to avid any scriptlets in my code (.jsp ) and use all the
available tags in Struts, but could not figure out as how I can set the
value for the hidden parameter. 

Was trying to avoid making round trip to the server as this .jsp is
consisting of 4 HTML layers (TO get the TAB PAGE EFFECT) . I am
currently working on one layer to see how things work.

I made a very exhaustive search in the web and could not find any body
doing this, which has put me in a tough position, BUT with your
excellent suggestions I did make very good progress (I'm excited) an may
be we will come up with a good solution.

I will keep Woking on ur suggestions and keep u posted.

Thanks

>>> jgreenhill@dayspring-tech.com 06/12/03 05:40PM >>>
Sashi,

You may indeed be able to get it to work with what you are doing, but
what I had in mind was WAY cleaner and more straight-forward. 

>>From your code it appears you've got scriptlets and javascript all
going
on in there. What I was proposing kept all java code in the actions,
used only tags and no javascript (granted, it involved a round-trip to
the server which may or may not be acceptable in your case).

I'm not sure what your javascript that might throw things off. Does
returning from validation work when you have NOT added a row?

-john

-----Original Message-----
From: Sashi Ravipati [mailto:RavipatiS@michigan.gov]
Sent: Thursday, June 12, 2003 1:57 PM
To: struts-user@jakarta.apache.org
Subject: RE: what setters do i implementinan indexedtag--NewBiequestion


When I first load the form I want two empty rows and then I should be
able to add more rows.

This is how I have my JSp page

Login Name: <html:text  property="login"/>
<TABLE id="mytable">
<tr>
  <th>First Name</th>
  <th>Telephone Number</th>
</tr>
<logic:present name="personList"> 
<logic:iterate id="person" name="dynaTableForm" property="personList" 
   type="com.learning.struts.PersonBean"  scope="session" >

  <tr>
    <td>
        <input type="hidden" name="key" />
       <html:text name="person" property="firstName" indexed="true"/>
    </td>
    <td>
        <html:text name="person" property="phoneNo" indexed="true"/>
    </td>
  </tr>
</logic:iterate>
</logic:present>
  
</TABLE>
<input type="button" name="addRow" value="Add Row"
onClick="insertTableRow('mytable')">
<br>
<table width="750" border="0" cellspacing="0" cellpadding="2">
  <tr> 
    <td align="middle"> &nbsp;&nbsp; 
      <html:submit />
      </td>
  </tr>
</table>
<%
  ArrayList arr=(ArrayList)request.getAttribute("personList");
System.out.println("ArraySize"+arr.size());
int cnt=arr.size();
%>
<input type="hidden" value="<%=cnt%>" name="personListLength" >

When I have a name in the Login Name text box the values in the table
are repopulated in the form, but when I  try to make the page fail with
validation error then The table is not built persolList.size()=0.

Do i need to take the form data and rebuild the Arraylist every time? If
so then when it passes validation how is populatting the data..

This is how my form bean looks

public class DyanTableForm extends ActionForm 
{
  private ArrayList personList;
  private String login="";



  public void reset(ActionMapping mapping, HttpServletRequest request){
     this.personList = new ArrayList();
    String num = request.getParameter("personListLength");
    //String num = "3";
     try {
            if (num != null) {
                int len = Integer.parseInt(num);
                for (int i = 0; i < len; i++)
                    this.personList.add(new PersonBean());
            }else
            {
              this.personList.add(new PersonBean());
            }
        }catch (NumberFormatException e) {
           e.printStackTrace();
        }

    }

  public ActionErrors validate(ActionMapping mapping, HttpServletRequest
request)
  {
   ActionErrors errors = new ActionErrors();
        if ((login == null) || (login.length() < 1))
            errors.add("Login", new
ActionError("error.Login.required"));
          return errors;
        
  }

  public void setLogin(String newLogin)
  {
    login = newLogin;
  }

  public String getLogin()
  {
    return login;
  }
  
  public PersonBean getPerson(int ndx) {
        return (PersonBean) personList.get(ndx);
    }
  public void setPersonList(int ndx, PersonBean p) {
        personList.set(ndx, p);
    }
  public ArrayList getPersonList(){
    return this.personList;
  }

  
  
}

The existing Data is editable in the text boxes.

I did put the hidden value in the page --But I am doing something wrong
here.. 

I am learning so pls bear with me..

Thanks

>>> jgreenhill@dayspring-tech.com 06/12/03 04:39PM >>>
Are you still sticking things in the request manually or did you switch
to the form? Only info you post in the form submission will come back to
you when validation returns.

I don't know if your existing data is editable in text boxes (in which
case it would post and come back) or if you are displaying it with
bean:write (or c:out...), in which case you would need to have hiddens
for every piece of info you display. 

As for the personListLength (that is what you meant by the ArrayList
size, right?), did you put it in a hidden as I suggested or manually
stick it in the request from the prep? It will need to post like all the
other info you want to still have upon return from validation.

An alternate, of course, is to put the form in session scope, then
everything will still be available when you return.

-j

-----Original Message-----
From: Sashi Ravipati [mailto:RavipatiS@michigan.gov]
Sent: Thursday, June 12, 2003 12:59 PM
To: struts-user@jakarta.apache.org
Subject: RE: what setters do i implementinan indexedtag--NewBiequestion


John

I am having a problem when the form Validation fails. The ArrayList is
size is resetting to ZERO.

The action errors are coming but the table with the data is not coming.


Thanks


>>> jgreenhill@dayspring-tech.com 06/12/03 02:52PM >>>
It's not the ArrayList that's the problem. The problem is getting
blank
PersonBeans into the ArrayList such that when the form is populated
they
are ready and waiting and you don't get the 'index out of bounds'
bomb.


-----Original Message-----
From: Bailey, Shane C. [mailto:SHANE.C.BAILEY@saic.com] 
Sent: Thursday, June 12, 2003 11:28 AM
To: 'Struts Users Mailing List'
Subject: RE: what setters do i implement inan
indexedtag--NewBiequestion



personList is an ArrayList.  I thought they increased automagically.
Maybe
only my special Java code makes ArrayList increase for me without
having
to
increase the size.
:)

-----Original Message-----
From: Sashi Ravipati [mailto:RavipatiS@michigan.gov] 
Sent: Thursday, June 12, 2003 2:33 PM
To: struts-user@jakarta.apache.org 
Subject: RE: what setters do i implement inan
indexedtag--NewBiequestion

Sorry for the post, I figured it out and got working.

Only issues is to Increase the size of the personList when rows are
added by user.

Any ideas

Thanks

>>> David.Karr@wamu.net 06/12/03 02:25PM >>>
> -----Original Message-----
> From: Sashi Ravipati [mailto:RavipatiS@michigan.gov] 
> 
> I had a question on how to do the prep action.
> 
> [This assumes the prep action that entered the jsp figured out the
size
> of the list and set it into a hidden in the jsp in a field named
> personListLength.]
> 
> I tried like this but not sure if this is right
> 
> In my action  i added these lines
> 
> ArrayList personList=new ArrayList();
>       personList.add(new PersonBean());
>       request.setAttribute("personList",personList);
>        return mapping.findForward("success");
> 
> I tried to retrieve it in the JSP page but did not get the value. I
must
> be doing something wrong.

If it isn't working, then show us what you did, and show exactly what
happened.  It's hard for us to help if we don't know what you did.


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org 
For additional commands, e-mail: struts-user-help@jakarta.apache.org 

---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org 
For additional commands, e-mail: struts-user-help@jakarta.apache.org 


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org 
For additional commands, e-mail: struts-user-help@jakarta.apache.org 


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org


Mime
View raw message