struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stéphane Zuckerman <>
Subject Re: LazyLists and dynamic forms
Date Thu, 07 Apr 2005 16:35:17 GMT
Niall Pemberton a écrit :
> Its hard to help when all you say is "failed to make their examples work".
> Posting snippets of relevant bits of your struts-config.xml, jsp etc would
> help along with what actually happened.

Sorry for the lack of details, I know I was really too vague.

I am using Struts 1.2.4 .

So, here is what I want to do :
I have a list of text fields which number is unknown when the user gets 
to the JSP. Fields are added dynamically through JavaScript.

Now, I know there is Struts 1.2.6 on its way, but I can't wait for it to 
get a "stable" label.

So here is the example I was trying to follow (extracted from :

In fact using Arrays (rather than Lists) a LazyDynaBean can be used 
directly, in the following way:


      <form-bean name="skillForm"
         <form-property name="skills" type="myPackage.SkillBean[]"/>


Supposedly, the LazyDynaBean object should be wrapped within a 
BeanValidatorForm one.

Here is what I am using in my struts-config.xml file :

       <form-bean name="dynaLazyForm"
         <form-property name="nb" type="java.lang.String" />
         <form-property  name="persons" 	

The class Person is really just a bean, with deux properties : name and 

Here is the JavaScript code I use to generate new text fields :

function foo() {
	var nb = document.getElementById('nb').value;
	var f = document.getElementById('f');
	f.innerHTML = null;
	f.innerHTML = "nb: "+
		"<input type='text' id='nb' value='"+nb+"' /><br />";
	for (var i = 0; i < nb; i++) {
		f.innerHTML += "name: <input type='text' " +
		      "name='persons["+i+"].name' id='name' /><br />";
		f.innerHTML += "first name:<input type='text' " +
		      "name='persons["+i+"].fname' id='fname' /><br />";
	f.innerHTML += "<input type='submit' value='submit' />";

The JSP is really basic (since this is a test) :

     <title>JSP for lazyForm form</title>
     <script src="js.js" language="javascript"
     <html:form action="/dynaLazy" styleId="f">
       nb : <html:text property="nb" onblur="foo()" styleId="nb"/>
       <br />

... And my Action class is as simple as the JSP :

public final class DynaLazyAction extends Action {
	public ActionForward execute(...) {
		DynaValidatorForm dynaForm = (DynaValidatorForm) form;
		// here is the line that makes it all crumble...
		Person[] persons = (Person[]) dynaForm.get("persons");

		return mapping.findForward("ok");

As I said before, when it is about "manual" forms, everything's fine, I 
use LazyLists, and it works (thank you so much, Rick; you made my 
morning wonderful :-) ).

I hope I wasn't too messy in my explanations ...

Thanks for any clue you might give me :-)

Stéphane Zuckerman

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message