Re: Why does struts assign indexedValues from 2nd index.......please help

2008-05-06 Thread venkat reddy
I've tried another example also...

ListForm.java
=
package com.myapp.struts.formbeans;
import org.apache.struts.action.*;
import javax.servlet.http.*;
import java.util.*;
/**
 *
 * @author Sai
 */
public class ListForm extends ActionForm {


private int size = 3;
private List friends = new ArrayList(size);

public List getFriends( ) {
return friends;
}

public String getFriend(int index) {
if (index = friends.size(  )) {
friends.add(index, new String());
}
return (String) friends.get(index);
}

public void setFriend(int index, String name) {
System.out.println(size: +friends.size()+- index:+index);
}

public void reset(ActionMapping mapping, HttpServletRequest request) {
// prepopulate the list with empty strings
friends = new ArrayList( );
for (int i=0; isize;i++) friends.add();
}


}

pollsForm2.jsp
==
h2List Form Test/h2
html:form action=/multipleForm method=get
Who are your 3 friends:br /
Friend 1: html:text property=friend[0]/br /
Friend 2: html:text property=friend[1]/br /
Friend 3: html:text property=friend[2]/br /
Friend 3: html:text property=friend[3]/br /
Friend 3: html:text property=friend[4]/br /
Friend 3: html:text property=friend[5]/br /
Friend 3: html:text property=friend[6]/br /
Friend 3: html:text property=friend[7]/br /
html:submit/
/html:form

The output while setting the request parameter values is as follows..
size: 3- index:0
size: 3- index:4
size: 3- index:3
size: 3- index:6
size: 3- index:7
size: 3- index:5
size: 3- index:1
size: 3- index:2

We can see here also struts is not settings the parameter values in order (
i mean according to the index ). It's trying to set object at 0 index,
jumping by trying to set at 4 index.

Why is this so??is this problem solved in struts 1.2.9 ( i'm
currently using 1.2.7) ??

Any personal suggestions are also appreciated..

Friends, please help


On Wed, May 7, 2008 at 1:30 AM, venkat reddy [EMAIL PROTECTED] wrote:

 I wanted to find a way to handle dynamic number of arguments for my
 poll-posting form which should be able to handle dynamic number of choice
 fields.

 So i maintained a list (pollChoices -- java.util.List type) for
 maintaining dynamic number of choice fields.

 ==
PollForm.java
 ==

 package com.myapp.struts.formbeans;
 import org.apache.struts.action.*;
 import javax.servlet.http.*;
 import java.util.*;
 import org.apache.commons.lang.*;
 /**
  *
  * @author Sai
  */
 public class PollForm extends ActionForm {

 private String pollQuestion;
 private String numberOfDays;
 private ArrayList pollChoices;

 /** Creates a new instance of BasicForm */
 public PollForm() {
 }

 public void reset(ActionMapping map, HttpServletRequest req) {
 System.out.println(Reset start...);
 setPollQuestion();
 setNumberOfDays();
 pollChoices = new ArrayList();
 System.out.println(Reset end...);
 }
 public ActionErrors validate(ActionMapping map, HttpServletRequest req)
 {

 System.out.println(Validate method...);
 ActionErrors errors = new ActionErrors();

 if(StringUtils.isBlank(pollQuestion))
 errors.add(pollQuestion,new
 ActionMessage(errors.required,Poll Question));
 if(StringUtils.isBlank(numberOfDays))
 errors.add(numberOfDays,new
 ActionMessage(errors.required,Number of days));
 if(pollChoices.size()  2)
 errors.add(pollChoice,new
 ActionMessage(errors.required,Atleast two poll choices));
 return errors;
 }

 public String getPollQuestion() {
 return pollQuestion;
 }

 public void setPollQuestion(String pollQuestion) {
 this.pollQuestion = pollQuestion;
 }

 public String getNumberOfDays() {
 return numberOfDays;
 }

 public void setNumberOfDays(String numberOfDays) {
 this.numberOfDays = numberOfDays;
 }

 public String getPollChoice(int index) {

 if(index = pollChoices.size()) {
 pollChoices.add(index,new String());
 }
 return (String) pollChoices.get(index);

 }

 public void setPollChoice(int index,String choice) {
 System.out.println(size: +pollChoices.size()+-
 index:+index);

 if(index  pollChoices.size())
 pollChoices.set(index,choice);
 else
 pollChoices.add(index,choice);

 }

 }



 ===

 The html-form looks like below

 html:form method=get action=/multipleForm
 html:text property=pollQuestion 

Re: Why does struts assign indexedValues from 2nd index.......please help

2008-05-06 Thread Laurie Harper
I can't tell you why the parameters are being passed out-of-sequence (I 
would guess they're being shuffled through a HashMap somewhere) but it's 
easy to deal with: simply have your setter grow the list as necessary to 
accommodate the passed index. Something like this:


public void setFriend(int index, String name) {
while (friends.size()  index) {
friends.add(null); // or  or whatever
}
friends.put(index, name);
}

HTH,

L.

venkat reddy wrote:

I've tried another example also...

ListForm.java
=
package com.myapp.struts.formbeans;
import org.apache.struts.action.*;
import javax.servlet.http.*;
import java.util.*;
/**
 *
 * @author Sai
 */
public class ListForm extends ActionForm {


private int size = 3;
private List friends = new ArrayList(size);

public List getFriends( ) {
return friends;
}

public String getFriend(int index) {
if (index = friends.size(  )) {
friends.add(index, new String());
}
return (String) friends.get(index);
}

public void setFriend(int index, String name) {
System.out.println(size: +friends.size()+- index:+index);
}

public void reset(ActionMapping mapping, HttpServletRequest request) {
// prepopulate the list with empty strings
friends = new ArrayList( );
for (int i=0; isize;i++) friends.add();
}


}

pollsForm2.jsp
==
h2List Form Test/h2
html:form action=/multipleForm method=get
Who are your 3 friends:br /
Friend 1: html:text property=friend[0]/br /
Friend 2: html:text property=friend[1]/br /
Friend 3: html:text property=friend[2]/br /
Friend 3: html:text property=friend[3]/br /
Friend 3: html:text property=friend[4]/br /
Friend 3: html:text property=friend[5]/br /
Friend 3: html:text property=friend[6]/br /
Friend 3: html:text property=friend[7]/br /
html:submit/
/html:form

The output while setting the request parameter values is as follows..
size: 3- index:0
size: 3- index:4
size: 3- index:3
size: 3- index:6
size: 3- index:7
size: 3- index:5
size: 3- index:1
size: 3- index:2

We can see here also struts is not settings the parameter values in order (
i mean according to the index ). It's trying to set object at 0 index,
jumping by trying to set at 4 index.

Why is this so??is this problem solved in struts 1.2.9 ( i'm
currently using 1.2.7) ??

Any personal suggestions are also appreciated..

Friends, please help


On Wed, May 7, 2008 at 1:30 AM, venkat reddy [EMAIL PROTECTED] wrote:


I wanted to find a way to handle dynamic number of arguments for my
poll-posting form which should be able to handle dynamic number of choice
fields.

So i maintained a list (pollChoices -- java.util.List type) for
maintaining dynamic number of choice fields.

==
   PollForm.java
==

package com.myapp.struts.formbeans;
import org.apache.struts.action.*;
import javax.servlet.http.*;
import java.util.*;
import org.apache.commons.lang.*;
/**
 *
 * @author Sai
 */
public class PollForm extends ActionForm {

private String pollQuestion;
private String numberOfDays;
private ArrayList pollChoices;

/** Creates a new instance of BasicForm */
public PollForm() {
}

public void reset(ActionMapping map, HttpServletRequest req) {
System.out.println(Reset start...);
setPollQuestion();
setNumberOfDays();
pollChoices = new ArrayList();
System.out.println(Reset end...);
}
public ActionErrors validate(ActionMapping map, HttpServletRequest req)
{

System.out.println(Validate method...);
ActionErrors errors = new ActionErrors();

if(StringUtils.isBlank(pollQuestion))
errors.add(pollQuestion,new
ActionMessage(errors.required,Poll Question));
if(StringUtils.isBlank(numberOfDays))
errors.add(numberOfDays,new
ActionMessage(errors.required,Number of days));
if(pollChoices.size()  2)
errors.add(pollChoice,new
ActionMessage(errors.required,Atleast two poll choices));
return errors;
}

public String getPollQuestion() {
return pollQuestion;
}

public void setPollQuestion(String pollQuestion) {
this.pollQuestion = pollQuestion;
}

public String getNumberOfDays() {
return numberOfDays;
}

public void setNumberOfDays(String numberOfDays) {
this.numberOfDays = numberOfDays;
}

public String getPollChoice(int index) {

if(index = pollChoices.size()) {
pollChoices.add(index,new String());
}
return (String) pollChoices.get(index);

}

public void setPollChoice(int index,String choice) {