You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Derek Hohls <DH...@csir.co.za> on 2004/06/21 14:51:18 UTC
[SOLVED] Re: [CForms] How to set multivalue widget's values ?
Johannes
You're a star! That's exactly what I needed to do.
You think that having used XSL for n years, I would
be used to adding a $ to the variable name...
Derek
>>> jc.textor@gmx.de 2004/06/21 01:32:56 PM >>>
Hi Derek,
now while trying out your code I discovered something that really has
nothing
to do with CForms:
<jx:forEach var="thisTheme" items="atheme">
<li>A Selection 1: ${atheme}</li>
</jx:forEach>
the syntax is simply wrong. it should say
<jx:forEach var="thisTheme" items="${atheme}">
<li>A Selection 1: ${thisTheme}</li>
</jx:forEach>
now this should help ;)
Derek Hohls wrote:
>Johannes
>
>Still no luck - I have tried adding in some more variables
>to test; and it looks like the values are being stored in
>the array OK...
>
> var values = Array();
>
> for( i = 0; i < model.theme.length ; i ++ )
> values[i] = model.theme[i];
>
> var test0 = values[0];
> var test1 = values[1];
>
> cocoon.sendPage("ijx-page", { "atheme":values, "theme":values,
>"test0":test0; "test1":test1 });
>
>The output for test0 or test1 matches the mulivalue widget
>selection BUT the "values" output in the JX for-each loop is
>still the strange references as before...
>
>What else to try ??
>Derek
>
>
>
>>>>jc.textor@gmx.de 2004/06/21 11:49:16 AM >>>
>>>>
>>>>
>Derek,
>
>I actually don't use the values this way, I insert them directly into
>the database
>after the form was submitted.
>Let's examine your code though, since you should be able to use the
>values in jxt
>as well.
>
> var model = form.getModel();
> var atheme = model.theme; /* theme is multiselect box */
> cocoon.sendPage("jxpage", { "atheme":atheme, "theme":model.theme
});
>
>There is something subtile here. "model.theme" is an object of type
>ScriptableWidget,
>so JXT will be confused when you pass it as a collection. (and print
>out the "value"
>org.apache.cocoon.forms.flow.javascript.ScriptableWidget@e1fb6c)
>
>I suggest retrieving the values to a native JavaScript array and
>passing that one
>to JXT.
>
> var model = form.getModel();
> var values = Array();
> for( i = 0; i < model.theme.length ; i ++ )
> values[i] = model.theme[i];
> cocoon.sendPage("jxpage", { "atheme":values, "theme":values });
>
>Does this work? It's just the solution to my problem applied in the
>opposite direction :)
>
>HTH, Johannes
>
>Derek Hohls wrote:
>
>
>
>>Johannes
>>
>>I have tried what you suggested - the problem
>>is displaying the results in the JXTemplate - could
>>you please post your code snippet, as what I have
>>tried does not work....
>>
>>ie.
>>
>>in flowscript:
>>
>>var model = form.getModel();
>> var atheme = model.theme; /* theme is multiselect box */
>> cocoon.sendPage("jxpage", { "atheme":atheme, "theme":model.theme
>>});
>>
>>in jxtemplate:
>>
>> <jx:forEach var="thisTheme" items="theme">
>> <li>Selection: ${theme}</li>
>> </jx:forEach>
>>
>> <jx:forEach var="thisTheme" items="atheme">
>> <li>A Selection 1: ${atheme}</li>
>> </jx:forEach>
>>
>> <jx:forEach var="thisTheme" items="atheme">
>> <li>A Selection 2: ${thisTheme}</li>
>> </jx:forEach>
>>
>>in output html:
>>
>>Selection:
>>org.apache.cocoon.forms.flow.javascript.ScriptableWidget@e1fb6c
>>A Selection 1:
>>org.apache.cocoon.forms.flow.javascript.ScriptableWidget@41825e
>>A Selection 2:
>>org.apache.cocoon.generation.JXTemplateGenerator$Expression@d622e5
>>
>>I am obviously missing some crucial conversion ?!
>>
>>Thanks
>>Derek
>>
>>
>>
>>
>>
>>>>>jc.textor@gmx.de 2004/06/21 08:35:47 AM >>>
>>>>>
>>>>>
>>>>>
>>>>>
>>Hi Derek + all,
>>
>>I got this solved in the meantime. Actually I had to create a
>>temporary
>>array and then set the multivalue model to this array:
>>
>>var model = form.getModel();
>>
>>var rubriken = Array();
>>
>>for( i = 0 ; i < size ; i ++ )
>> rubriken[i] = new java.lang.Integer(val[i]);
>>
>>model.rubriken = rubriken;
>>
>>Notice the difference to the code quoted below: Modifying the model
>>directly did NOT work, as it is actually an object of type widget
and
>>
>>
>
>
>
>>something
>>gets messed up. This is because internally, a setter method is
called
>>when
>>assigning something to model.rubriken. Took me some hours to figure
>>this
>>out, as I'm a CForms beginner :)
>>
>>I think I will put a stripped-down version of my article management
>>
>>
>on
>
>
>>the
>>wiki when I'm done - it's based on CForms + Woody + Hibernate and
>>
>>
>uses
>
>
>>a few more widgets than the present sample.
>>
>>Derek, you can read values from the model like this:
>>
>>var model = form.getModel();
>>var vals = model.rubriken // retrieve array from multivalue widgets
>>
>>Now, vals is an array which contains all the values of the options
>>selected by
>>the user.
>>
>>Derek Hohls wrote:
>>
>>
>>
>>
>>
>>>And maybe the same person knows how to
>>>*get* the values from the CForm multivalue widget
>>>and display them using a JXTemplate loop??
>>>
>>>A sample showing both of these would be *very*
>>>helpful and (IMO) needs to be a part of the
>>>Cocoon forms samples.
>>>
>>>Thanks
>>>Derek
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>>>>jc.textor@gmx.de 2004/06/20 09:25:06 PM >>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>Hi all,
>>>
>>>I'm going nuts trying to set values in a CForm multivalue widget.
>>>
>>>I obtained the Form model with:
>>>
>>>var model = form.getModel();
>>>
>>>Then I tried to set the values like this:
>>>
>>>model.rubriken = Array(size);
>>>for( i = 0 ; i < size; i++)
>>> model.rubriken[i] = new java.lang.Integer(val[i]);
>>>
>>>When size=0, everything is fine. Otherwise, I get
>>>
>>>Cannot set value of field "rubriken" with an object of type
>>>org.mozilla.javascript.UniqueTag
>>>
>>>When I omit the array declaration, I get null pointer exceptions.
>>>
>>>Has anybody done this and can explain me how ?
>>>
>>>TIA, Johannes
>>>
>>>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
MailScanner thanks transtec Computers for their support.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org