The sandbox component doesn't do what you want anyway.   It's all
server-side, not client-side.

On 4/12/07, monkeyden <[EMAIL PROTECTED]> wrote:


monkeyden wrote:
>
> "I know Tomahawk has something like this in the sandbox.  We're using
> ICEFaces but I think this is a standard JSF question."
>

I'm not switching for one control.  I've programmatically updated the
backing bean's List<SelectItem>.  All I need to know is how to tell JSF to
update the values, for this component, from the backing bean.  I want to do
this within a value change listener method.


Beelen, Marco wrote:
>
> With the risk of stating the obvious:
>
> Have you taken a look at:
> http://myfaces.apache.org/sandbox/selectManyPicklist.html
> It does the trick for me perfectly!
>
> With regards,
>   Marco
>
> -----Original Message-----
> From: monkeyden [mailto:[EMAIL PROTECTED]
> Sent: donderdag 12 april 2007 4:45
> To: [EMAIL PROTECTED]
> Subject: Re: Programatically updating the model
>
>
>
> Mike Kienenberger wrote:
>>
>> Are you physically moving with javascript the values 1,2,3 over to the
>> other html element form data?
>>
> I'm physically moving the values using JavaScript.
>
>
> Mike Kienenberger wrote:
>>
>> Or when you submit the form, are you submitting values 1,2,3 for List
>> A, submitting no values for List B, and executing a move action (or
>> action listener)?   This is what would normally happen if you had two
>> SelectMany components and a button on a page.
>>
> I assume you're referring to submission when the Add/Remove buttons are
> clicked.  For better or worse (most likely worse), everything is client
> side
> until the form is submitted.  The Direct-to-DOM feature of ICEFaces
> would be
> great for this if list A didnt potentially have 400+ items.  This
> absolutely
> kills performance.
>
>
> Mike Kienenberger wrote:
>>
>> The validation for List B should happen when List B still has no
>> elements.  Maybe validation is failing because you told it that List B
>> requires a value?
>>
> I have required="false" for the component.  In fact, here is the code:
>
> List A
> <ice:selectManyListbox id="availableLocations" required="false"
>     size="11" styleClass="inputText" style="width:200px"
> ondblclick="NEMAdd();return false;" immediate="true">
>     <f:selectItems value="#{advancedSearchAction.availableTowns}" />
> </ice:selectManyListbox>
>
> Add Button
> <ice:commandButton value="#{messages['propertysearch.button.add']}"
>
> onclick="addSelectedOptions('advancedPropertySearch:advPropTabSet:availa
> bleLocations',
> 'advancedPropertySearch:advPropTabSet:userLocations');return false;"
> />
> Remove Button
> <ice:commandButton value="#{messages['propertysearch.button.remove']}"
>
> onclick="removeSelectedOptions('advancedPropertySearch:advPropTabSet:use
> rLocations',
> 'advancedPropertySearch:advPropTabSet:availableLocations');return
> false;"
> />
>
> List B
> <ice:selectManyListbox immediate="true" id="userLocations" size="11"
> styleClass="inputText" style="width:200px" required="false"
>     value="#{advancedSearchAction.submittedTowns}"
>
> ondblclick="removeSelectedOptions('advancedPropertySearch:advPropTabSet:
> userLocations',
> 'advancedPropertySearch:advPropTabSet:availableLocations');return
> false;">
>     <f:selectItems value="#{advancedSearchAction.selectedTowns}" />
> </ice:selectManyListbox>
>
> And, last but not least, the button which submits:
> <ice:commandButton id="searchNowA"
>
> onclick="processLocations();selectAll('advancedPropertySearch:advPropTab
> Set:userLocations',
> 0);selectAll('advancedPropertySearch:advPropTabSet:availableLocations',
> 0);"
>     value="#{messages['propertysearch.label.button.searchNow']}"
>     action="#{advancedSearchAction.search}"
> />
>
>
> Mike Kienenberger wrote:
>>
>> Are you sure that validation isn't failing for some other reason than
>> the one you think?  Put some messages tags on your page.
>>
> I'm positive.
>
>
> Mike Kienenberger wrote:
>>
>> As for subclassing, you can add things like this to your
> faces-config.xml
>> file.
>>
>>      <component>
>>
>>
> <component-type>com.xyz.jsf.component.PropertyComparator</component-type
>>
>>
>>
> <component-class>com.xyz.jsf.component.PropertyComparator</component-cla
> ss>
>>      </component>
>>
>>      <render-kit>
>>         <render-kit-id>HTML_BASIC</render-kit-id>
>>
>>         <renderer>
>>
> <component-family>org.apache.myfaces.Radio</component-family>
>>             <renderer-type>org.apache.myfaces.Radio</renderer-type>
>>
>>
> <renderer-class>com.xyz.jsf.component.ExtendedHtmlRadioRenderer</rendere
> r-class>
>>         </renderer>
>>
>>     </render-kit>
>>
>> I know for sure that overriding a renderer works this easily.
>>
> Doesn't this setting extend this method for all occurances of
> "org.apache.myfaces.Radio" in your application?
>
>
> Mike Kienenberger wrote:
>>
>> I don't know for sure that overriding a component works in standard
>> JSF/JSP.   It'd be easy to test.
>>
>> I know that in Facelets, you can trivially redefine a new tag name
>> with a different component and renderer.
>>
>>     <tag>
>>         <tag-name>dataTable</tag-name>
>>         <component>
>>
>> <component-type>org.apache.myfaces.HtmlDataTable</component-type>
>>             <renderer-type>org.apache.myfaces.Table</renderer-type>
>>         </component>
>>     </tag>
>>
>> Worse case, you might need to also define a new tld/jsp TagHandler.
>>
> On 4/11/07, monkeyden <[EMAIL PROTECTED]> wrote:
>>
>> Here is why I believe I need to do this...correct me if Im wrong.
>>
>> I have two lists (A and B).  List A has values 1,2,3,4,5 .  List B has
>> nothing.  I move the values 1,2,3 over to list B and submit.  Because
> the
>> values 1,2,3 are not a subset of the original <f:selectItems> used to
>> populate list B, the submitted values are invalid.
>>
>> I can't get to the "update model phase" because the component has
> already
>> failed validation in the previous phase.  I would like to know about
>> extending UISelect, mainly how to tell JSF to use my subclass.  I've
> never
>> extended JSF in this manner.
>>
>> Thanks for the response.
>>
>>
>> Mike Kienenberger wrote:
>> >
>> > Would it be easier for you to override the following method in
>> > UISelect in your own component subclass?
>> >
>> > protected void validateValue(FacesContext context, Object
>> convertedValue)
>> >
>> > I'm actually kind of confused why you'd even need to do this.
>> >
>> > Your source select many component has a list of items, and any items
>> > you select in it should be valid.   The same should be true for your
>> > destination component.
>> >
>> > You would update the lists after the update model phase (invoke
>> > action) and before rendering a new response, so there shouldn't be
> any
>> > trickery necessary.
>> >
>> > I do something similar with two UIData components and two lists.
> My
>> > "picker" only works for one item at a time, but should be pretty
> much
>> > the same other than that.
>> >
>> >
>> > On 4/11/07, monkeyden <[EMAIL PROTECTED]> wrote:
>> >>
>> >> I'm implementing a "mover box control", which consists of two
> select
>> >> boxes
>> >> and two mover buttons (Add/Remove).
>> >> In the valueChangeListener method,  I need to programmatically take
> the
>> >> submitted values and create SelectItems out of them.  In order to
> trick
>> >> JSF
>> >> into thinking that they are valid, I'd like to update the model.
> This
>> is
>> >> done to get around the problem of submitted values not being valid
> when
>> >> they
>> >> are not a subset of the original list.  I've tried several of the
>> methods
>> >> on
>> >> UIInput and UIViewRoot but none seem to be working correctly.  I
> know
>> >> Tomahawk has something like this in the sandbox.  We're using
> ICEFaces
>> >> but I
>> >> think this is a standard JSF question.
>> >>
>> >> Thanks for the guidance
>> >> --
>> >> View this message in context:
>> >>
>>
> http://www.nabble.com/Programatically-updating-the-model-tf3562422.html#
> a9949895
>> >> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>> >>
>> >>
>> >
>> >
>>
>> --
>> View this message in context:
>>
> http://www.nabble.com/Programatically-updating-the-model-tf3562422.html#
> a9951617
>> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>>
>>
>
>
>
> --
> View this message in context:
> http://www.nabble.com/Programatically-updating-the-model-tf3562422.html#
> a9952049
> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>
>
>
>
> ------------------------------------------------------------------------------
> Notice:  This e-mail message, together with any attachments, contains
> information of Merck & Co., Inc. (One Merck Drive, Whitehouse Station,
> New Jersey, USA 08889), and/or its affiliates (which may be known
> outside the United States as Merck Frosst, Merck Sharp & Dohme or MSD
> and in Japan, as Banyu - direct contact information for affiliates is
> available at http://www.merck.com/contact/contacts.html) that may be
> confidential, proprietary copyrighted and/or legally privileged. It is
> intended solely for the use of the individual or entity named on this
> message. If you are not the intended recipient, and have received this
> message in error, please notify us immediately by reply e-mail and then
> delete it from your system.
>
> ------------------------------------------------------------------------------
>
>

--
View this message in context: 
http://www.nabble.com/Programatically-updating-the-model-tf3562422.html#a9959591
Sent from the MyFaces - Users mailing list archive at Nabble.com.


Reply via email to