You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Dev at weitling <de...@weitling.net> on 2007/05/12 16:18:57 UTC

Binding "on-insert-row" is ignored

Hello folks,

I'm working for days on a binding problem. Narrowing the context of my
problem (nested repeaters) I'm still stuck with the configuration
described below (with 2.1.10, standard config). Everything loads fine
but when I hit the "Add row"-button a row is created without even
touching my beans/methods. I would at least expect an error when I omit
the target method or give an unavailable class.

Maybe I'm doing something fundamentally wrong but I can't see the
difference to examples known as working from the net.

:-?
Florian


#### flowscript ####
function test2 () {
    var form = new Form("definitions/test2.xml");
    form.createBinding("bindings/test2.xml");
    var bean = new Packages.demo.Test2();
    form.load(bean);
    form.showForm("templates/test2.xml");
    cocoon.sendPage("success");
}

#### definitions/test2.xml ####
        <fd:repeater id="testRepeater">
            <fd:widgets>
                <fd:field id="testField">
                    <fd:datatype base="string"/>
                </fd:field>
            </fd:widgets>
        </fd:repeater>
       
        <fd:repeater-action id="addTestField" repeater="testRepeater"
command="add-row">
            <fd:label>Add row</fd:label>
        </fd:repeater-action>

#### bindings/test2.xml ####
    <fb:repeater id="testRepeater" parent-path="." row-path="testFields">
        <fb:on-bind>
            <fb:value id="testField" path="testText"/>
        </fb:on-bind>
       
        <fb:on-insert-row>
            <fb:insert-bean addmethod="addTestField"/>
        </fb:on-insert-row>
    </fb:repeater>

#### templates/test2.xml ####
            <ft:repeater id="testRepeater">
                <div>
                <ft:repeater-rows>
                    <ft:widget id="testField"/>
                </ft:repeater-rows>
                </div>
            </ft:repeater>
                       
            <ft:widget id="addTestField"/>


#### demo.Test2.java ####
    Collection testFields = new ArrayList();
   
    public Test2 () {
        testFields.add(new TestField("argh"));
        testFields.add(new TestField("urks"));
        testFields.add(new TestField("blubb"));
    }
   
    public Collection getTestFields () {
        return testFields;
    }

#### demo.TestField.java ####
    String testText;
   
    public TestField (String testText) {
        this.testText = testText;
    }
   
    public String getTestText () {
        return testText;
    }


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Binding "on-insert-row" is ignored

Posted by Alessandro Vincelli <av...@alessandro.vincelli.name>.
> Hm, ok, then there are many more questions:
> When the binding should only be active on load() and save() wh gets hold
> of the empty dummy rows create during my dozens of add-row-hits? How
> could this make sense?

this is a separation of concerns,

> So if I press three times "add row" I get three empty rows I may fill
> with text. And when I hit "save" then on form.save() then my binding
> creates three TestField objects?
> Where do you know it behaves this way? I didn't find any hint in the
>docs. More of the way I understood it.

to manage events form you can write your event handling.

for a complete example see this:

 http://cocoon.zones.apache.org/demos/release/samples/blocks/forms/dreamteam

an see the relative source code




Dev at weitling ha scritto:
> Hi Jason,
>
>   
>> Just to clarify, you're expecting your fb:on-insert-row to be executed
>> immediately after you press the Add Row button on your form?  If so,
>> then I think there's a misunderstanding; the binding only executes at
>> the time of form.save().  At that point if there are more rows in the
>> repeater than items in the bean, then the fb:on-insert-row binding
>> will be executed to add enough items to the bean to hold the
>> repeater's values.
>>     
>
> Hm, ok, then there are many more questions:
> When the binding should only be active on load() and save() wh gets hold
> of the empty dummy rows create during my dozens of add-row-hits? How
> could this make sense?
> So if I press three times "add row" I get three empty rows I may fill
> with text. And when I hit "save" then on form.save() then my binding
> creates three TestField objects?
> Where do you know it behaves this way? I didn't find any hint in the
> docs. More of the way I understood it.
>
> And:
> How could I make it behave as I want it to? I want to call a method on
> my container object which creates a new row (and rows in nested
> repeaters as this is my advanced problem) and redisplays the form.
>
> Questions, questions, questions ...
>
> Florian
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>
>
>
>   


-- 
Alessandro Vincelli


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Binding "on-insert-row" is ignored

Posted by Dev at weitling <de...@weitling.net>.
Hi Jason,

> Just to clarify, you're expecting your fb:on-insert-row to be executed
> immediately after you press the Add Row button on your form?  If so,
> then I think there's a misunderstanding; the binding only executes at
> the time of form.save().  At that point if there are more rows in the
> repeater than items in the bean, then the fb:on-insert-row binding
> will be executed to add enough items to the bean to hold the
> repeater's values.

Hm, ok, then there are many more questions:
When the binding should only be active on load() and save() wh gets hold
of the empty dummy rows create during my dozens of add-row-hits? How
could this make sense?
So if I press three times "add row" I get three empty rows I may fill
with text. And when I hit "save" then on form.save() then my binding
creates three TestField objects?
Where do you know it behaves this way? I didn't find any hint in the
docs. More of the way I understood it.

And:
How could I make it behave as I want it to? I want to call a method on
my container object which creates a new row (and rows in nested
repeaters as this is my advanced problem) and redisplays the form.

Questions, questions, questions ...

Florian

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Binding "on-insert-row" is ignored

Posted by Jason Johnston <co...@lojjic.net>.
Dev at weitling wrote:
> Hello folks,
> 
> I'm working for days on a binding problem. Narrowing the context of my
> problem (nested repeaters) I'm still stuck with the configuration
> described below (with 2.1.10, standard config). Everything loads fine
> but when I hit the "Add row"-button a row is created without even
> touching my beans/methods. I would at least expect an error when I omit
> the target method or give an unavailable class.

Just to clarify, you're expecting your fb:on-insert-row to be executed 
immediately after you press the Add Row button on your form?  If so, 
then I think there's a misunderstanding; the binding only executes at 
the time of form.save().  At that point if there are more rows in the 
repeater than items in the bean, then the fb:on-insert-row binding will 
be executed to add enough items to the bean to hold the repeater's values.

Does this help or am I misreading your question?

> 
> Maybe I'm doing something fundamentally wrong but I can't see the
> difference to examples known as working from the net.
> 
> :-?
> Florian
> 
> 
> #### flowscript ####
> function test2 () {
>     var form = new Form("definitions/test2.xml");
>     form.createBinding("bindings/test2.xml");
>     var bean = new Packages.demo.Test2();
>     form.load(bean);
>     form.showForm("templates/test2.xml");
>     cocoon.sendPage("success");
> }
> 
> #### definitions/test2.xml ####
>         <fd:repeater id="testRepeater">
>             <fd:widgets>
>                 <fd:field id="testField">
>                     <fd:datatype base="string"/>
>                 </fd:field>
>             </fd:widgets>
>         </fd:repeater>
>        
>         <fd:repeater-action id="addTestField" repeater="testRepeater"
> command="add-row">
>             <fd:label>Add row</fd:label>
>         </fd:repeater-action>
> 
> #### bindings/test2.xml ####
>     <fb:repeater id="testRepeater" parent-path="." row-path="testFields">
>         <fb:on-bind>
>             <fb:value id="testField" path="testText"/>
>         </fb:on-bind>
>        
>         <fb:on-insert-row>
>             <fb:insert-bean addmethod="addTestField"/>
>         </fb:on-insert-row>
>     </fb:repeater>
> 
> #### templates/test2.xml ####
>             <ft:repeater id="testRepeater">
>                 <div>
>                 <ft:repeater-rows>
>                     <ft:widget id="testField"/>
>                 </ft:repeater-rows>
>                 </div>
>             </ft:repeater>
>                        
>             <ft:widget id="addTestField"/>
> 
> 
> #### demo.Test2.java ####
>     Collection testFields = new ArrayList();
>    
>     public Test2 () {
>         testFields.add(new TestField("argh"));
>         testFields.add(new TestField("urks"));
>         testFields.add(new TestField("blubb"));
>     }
>    
>     public Collection getTestFields () {
>         return testFields;
>     }
> 
> #### demo.TestField.java ####
>     String testText;
>    
>     public TestField (String testText) {
>         this.testText = testText;
>     }
>    
>     public String getTestText () {
>         return testText;
>     }
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Binding "on-insert-row" is ignored

Posted by Dev at weitling <de...@weitling.net>.

Grzegorz Kossakowski wrote:
> Dev at weitling pisze:
>> To answer 1. and 2.: In my case I would like to have exactly this! If
>> user A edits a question then changes should appear as soon as possible
>> on the display of user B. And for reducing memory consumption on bean
>> side I try to use only one question object for the crowd of users
>> working on it.
>
> I may repeat myself and seem to be boring but think over your
> approach, again. Do it before it's not too late ;-)

Well, I'll do. But I just have to know why I bark up the wrong tree. I
try to work in a kind of singleton pattern. Why having multiple question
objects if it's really only one. Why handle conflicts when I can prevent
them or at least minimize them?

> What you describe it's really anti-pattern and it can be labeled that
> way because it means troubles sooner or later, for sure. :-)

You didn't have a look at the design of the application currently in use
... provides nightmares ... ;-)

Good night, till next time*,
Florian





__
* Promise and menace ;-)

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Binding "on-insert-row" is ignored

Posted by Grzegorz Kossakowski <gk...@apache.org>.
Dev at weitling pisze:
> To answer 1. and 2.: In my case I would like to have exactly this! If
> user A edits a question then changes should appear as soon as possible
> on the display of user B. And for reducing memory consumption on bean
> side I try to use only one question object for the crowd of users
> working on it.

I may repeat myself and seem to be boring but think over your approach, again. Do it before it's not too late ;-)
What you describe it's really anti-pattern and it can be labeled that way because it means troubles sooner or later, for 
sure. :-)

>> Florian, you really have to provide *strong* arguments to make us
>> change architecture of Forms framework and abandom all the patterns of
>> web programming ;-)
>> Explain please why you really need this live binding so we could help
>> you more.
> 
> Ok, I'll meditate about it ;-) But perhaps you may help me with this
> one: How do I create a bunch of fields in a nested repeater on creation
> of a new row in the parent repeater?

I hope that this will let you get started:
http://svn.apache.org/repos/asf/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-sample/src/main/resources/COB-INF/forms/dynamicrepeater.xml

> And it'st time for sending my thanks to you three!

No problem.

-- 
Grzegorz Kossakowski

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Binding "on-insert-row" is ignored

Posted by Dev at weitling <de...@weitling.net>.
>> 4. on row creation build new widgets
> right, by using event-handling.
>
>> 5. on form.save() get the values form the widgets and fill the bean,
>> calling the fb:on-insert-row "addmethod" for new repeater rows as
>> necessary
>>
>> So this would mean
>> 1. big memory consumption because data is doubly hold by two different
>> structures (bean and form-widget-whatever)
>
> It is done that way because ORM tools work with beans not forms. It's
> perfect example of seperation of concerns that Cocoon aims to provide
> at every stage of webapp creation. It's Cocoon's philosophy that has
> several strong advantages.
> Are your structures so big that you must care about this point?
>
>> 2. a non-live connection between the form and its bean model
>
> Again, it's design principle to update data in transactional manner so
> for example other users do not see partially updated questions.
> Why do you really need this live connection?

To answer 1. and 2.: In my case I would like to have exactly this! If
user A edits a question then changes should appear as soon as possible
on the display of user B. And for reducing memory consumption on bean
side I try to use only one question object for the crowd of users
working on it.

>> 3. error-prone row creation because some data might be lost
>
> How?

While reading and writing newsgroup messages I'm discovering new sides
of Cocoon :-)

>> Besides my special problem, what about extending the binding for
>> (structure-)updating? What about let the bean hold the structure and
>> data in a more live way?
>> I know this might be offending, but if (...) my bosses let me go we
>> could discuss this at GetTogether :-)
>
> Florian, you really have to provide *strong* arguments to make us
> change architecture of Forms framework and abandom all the patterns of
> web programming ;-)
> Explain please why you really need this live binding so we could help
> you more.

Ok, I'll meditate about it ;-) But perhaps you may help me with this
one: How do I create a bunch of fields in a nested repeater on creation
of a new row in the parent repeater?

And it'st time for sending my thanks to you three!

Ciao,
Florian


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Binding "on-insert-row" is ignored

Posted by Grzegorz Kossakowski <gk...@apache.org>.
Dev at weitling pisze:
> Hi Grzegorz, Alessandro and Jason,
> 
> Well, if I understood it right what you three pointed out, the process
> is as follows:
> 
> 1. create the form plus binding
> 2. create the bean holding the initial values
> 3. on form.load() fill the widgets from the bean by copying its
> structure and values
> 4. on row creation build new widgets

right, by using event-handling.

> 5. on form.save() get the values form the widgets and fill the bean,
> calling the fb:on-insert-row "addmethod" for new repeater rows as necessary
> 
> So this would mean
> 1. big memory consumption because data is doubly hold by two different
> structures (bean and form-widget-whatever)

It is done that way because ORM tools work with beans not forms. It's perfect example of seperation of concerns that 
Cocoon aims to provide at every stage of webapp creation. It's Cocoon's philosophy that has several strong advantages.
Are your structures so big that you must care about this point?

> 2. a non-live connection between the form and its bean model

Again, it's design principle to update data in transactional manner so for example other users do not see partially 
updated questions.
Why do you really need this live connection?

> 3. error-prone row creation because some data might be lost

How?

> Let me explain item three: I have nested repeaters in a kind of multiple
> question form where the user may create a new row holding a new
> (possibly correct) answer (=answerRepeater). Inside there is a nested
> repeater holding answer text in different languages. When a new row is
> created there not only a number of answer text fields has to be created,
> but they also have to be connected with a language hold by a list. I see
> a problem there. And it looks as I have to put the cart before the horse
> with putting the action for data updating in the definition, partially
> in the flow and clean-up in the binding.

I don't follow you here. In your situation you need only to create rows of several repeaters dynamically but by no means 
you have to mess up with form definition/binding at runtime. In fact, it should be rather easy to write form definition 
and binding that would handle all the structures that user is allowed to create.

Really, binding will handle them. Please explain your exact problem little more.

> Besides my special problem, what about extending the binding for
> (structure-)updating? What about let the bean hold the structure and
> data in a more live way?
> I know this might be offending, but if (...) my bosses let me go we
> could discuss this at GetTogether :-)

Florian, you really have to provide *strong* arguments to make us change architecture of Forms framework and abandom all 
the patterns of web programming ;-)
Explain please why you really need this live binding so we could help you more.

-- 
Grzegorz Kossakowski


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Binding "on-insert-row" is ignored

Posted by Dev at weitling <de...@weitling.net>.
Hi Grzegorz, Alessandro and Jason,

Well, if I understood it right what you three pointed out, the process
is as follows:

1. create the form plus binding
2. create the bean holding the initial values
3. on form.load() fill the widgets from the bean by copying its
structure and values
4. on row creation build new widgets
5. on form.save() get the values form the widgets and fill the bean,
calling the fb:on-insert-row "addmethod" for new repeater rows as necessary

So this would mean
1. big memory consumption because data is doubly hold by two different
structures (bean and form-widget-whatever)
2. a non-live connection between the form and its bean model
3. error-prone row creation because some data might be lost

Let me explain item three: I have nested repeaters in a kind of multiple
question form where the user may create a new row holding a new
(possibly correct) answer (=answerRepeater). Inside there is a nested
repeater holding answer text in different languages. When a new row is
created there not only a number of answer text fields has to be created,
but they also have to be connected with a language hold by a list. I see
a problem there. And it looks as I have to put the cart before the horse
with putting the action for data updating in the definition, partially
in the flow and clean-up in the binding.

Besides my special problem, what about extending the binding for
(structure-)updating? What about let the bean hold the structure and
data in a more live way?
I know this might be offending, but if (...) my bosses let me go we
could discuss this at GetTogether :-)

Bye,
Florian



Grzegorz Kossakowski wrote:
> Binding (and its events) are executed only when form.save (or load) is
> called. As Jason and Alessandro already, you should use event handling
> in your case.
>
> If you want to see use of fb:on-insert-row search for Form2 sample.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Binding "on-insert-row" is ignored

Posted by Grzegorz Kossakowski <gk...@apache.org>.
Dev at weitling pisze:
> Hi Alessandro,
> 
>> in class name insert the complete classname,iI think : demo.TestField
>>
>> in class demo.Test2 you must implement the addTestField method
>>
>> for example 
>>
>>    public addTestField(TestField tf) {
>>         this.testFields.add(tf);
>>     }
>>
>> <fb:insert-bean classname="TestField" addmethod="addTestField"/>
>>   
> 
> Thanks, but I've already done that. Let's begin from the other side:
> What should happen if I leave out the classname, leave out the method,
> enter wrong or incomplete classname or method or the class is
> unreachable? Shouldn't there be an error? But there isn't.
> I may even leave out the whole fb:insert-bean or fb:on-insert-row. I hit
> my "Add row"-button and get a new row. Nothing more, nothing less.
> 
> :-? (becoming nuts)

Binding (and its events) are executed only when form.save (or load) is called. As Jason and Alessandro already, you should use event 
handling in your case.

If you want to see use of fb:on-insert-row search for Form2 sample.

-- 
Grzegorz Kossakowski
http://reflectingonthevicissitudes.wordpress.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Binding "on-insert-row" is ignored

Posted by Dev at weitling <de...@weitling.net>.
Hi Alessandro,

> in class name insert the complete classname,iI think : demo.TestField
>
> in class demo.Test2 you must implement the addTestField method
>
> for example 
>
>    public addTestField(TestField tf) {
>         this.testFields.add(tf);
>     }
>
> <fb:insert-bean classname="TestField" addmethod="addTestField"/>
>   

Thanks, but I've already done that. Let's begin from the other side:
What should happen if I leave out the classname, leave out the method,
enter wrong or incomplete classname or method or the class is
unreachable? Shouldn't there be an error? But there isn't.
I may even leave out the whole fb:insert-bean or fb:on-insert-row. I hit
my "Add row"-button and get a new row. Nothing more, nothing less.

:-? (becoming nuts)


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Binding "on-insert-row" is ignored

Posted by Alessandro Vincelli <av...@alessandro.vincelli.name>.
in class name insert the complete classname,iI think : demo.TestField


in class demo.Test2 you must implement the addTestField method

for example 

   public addTestField(TestField tf) {
        this.testFields.add(tf);
    }
   



<fb:insert-bean classname="TestField" addmethod="addTestField"/>



Dev at weitling ha scritto:
> Hi Alessandro,
>
>   
>> you missed class name:
>>
>> <fb:insert-bean classname="TestField" addmethod="addTestField"/>
>>   
>>     
>
> that's the point - it doesn't matter if I insert a full and correct
> class name, leave it out or enter a wrong classname. There's no failure
> message at all. It inserts a row but not the way I want it to.
>
> :-(
> Florian
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>
>
>
>   


-- 
Alessandro Vincelli


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Binding "on-insert-row" is ignored

Posted by Dev at weitling <de...@weitling.net>.
Hi Alessandro,

> you missed class name:
>
> <fb:insert-bean classname="TestField" addmethod="addTestField"/>
>   

that's the point - it doesn't matter if I insert a full and correct
class name, leave it out or enter a wrong classname. There's no failure
message at all. It inserts a row but not the way I want it to.

:-(
Florian

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Binding "on-insert-row" is ignored

Posted by Alessandro Vincelli <av...@alessandro.vincelli.name>.
Hi florian

you missed class name:

<fb:insert-bean classname="TestField" addmethod="addTestField"/>

Insert TestField with full package



Dev at weitling ha scritto:
> Hello folks,
>
> I'm working for days on a binding problem. Narrowing the context of my
> problem (nested repeaters) I'm still stuck with the configuration
> described below (with 2.1.10, standard config). Everything loads fine
> but when I hit the "Add row"-button a row is created without even
> touching my beans/methods. I would at least expect an error when I omit
> the target method or give an unavailable class.
>
> Maybe I'm doing something fundamentally wrong but I can't see the
> difference to examples known as working from the net.
>
> :-?
> Florian
>
>
> #### flowscript ####
> function test2 () {
>     var form = new Form("definitions/test2.xml");
>     form.createBinding("bindings/test2.xml");
>     var bean = new Packages.demo.Test2();
>     form.load(bean);
>     form.showForm("templates/test2.xml");
>     cocoon.sendPage("success");
> }
>
> #### definitions/test2.xml ####
>         <fd:repeater id="testRepeater">
>             <fd:widgets>
>                 <fd:field id="testField">
>                     <fd:datatype base="string"/>
>                 </fd:field>
>             </fd:widgets>
>         </fd:repeater>
>        
>         <fd:repeater-action id="addTestField" repeater="testRepeater"
> command="add-row">
>             <fd:label>Add row</fd:label>
>         </fd:repeater-action>
>
> #### bindings/test2.xml ####
>     <fb:repeater id="testRepeater" parent-path="." row-path="testFields">
>         <fb:on-bind>
>             <fb:value id="testField" path="testText"/>
>         </fb:on-bind>
>        
>         <fb:on-insert-row>
>             <fb:insert-bean addmethod="addTestField"/>
>         </fb:on-insert-row>
>     </fb:repeater>
>
> #### templates/test2.xml ####
>             <ft:repeater id="testRepeater">
>                 <div>
>                 <ft:repeater-rows>
>                     <ft:widget id="testField"/>
>                 </ft:repeater-rows>
>                 </div>
>             </ft:repeater>
>                        
>             <ft:widget id="addTestField"/>
>
>
> #### demo.Test2.java ####
>     Collection testFields = new ArrayList();
>    
>     public Test2 () {
>         testFields.add(new TestField("argh"));
>         testFields.add(new TestField("urks"));
>         testFields.add(new TestField("blubb"));
>     }
>    
>     public Collection getTestFields () {
>         return testFields;
>     }
>
> #### demo.TestField.java ####
>     String testText;
>    
>     public TestField (String testText) {
>         this.testText = testText;
>     }
>    
>     public String getTestText () {
>         return testText;
>     }
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>
>
>
>   





---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org