You would need to implement it yourself

I already added it to the wiki a long time back:

http://wiki.apache.org/myfaces/JavascriptWithJavaServerFaces

Look at the "Using javascript and command links to submit a form from
a control event" section

On Wed, Jul 9, 2008 at 10:28 AM, Richard Yee <[EMAIL PROTECTED]> wrote:
> Andrew,
> Sorry to be dense, but is 'click' a JavaScript function in Trinidad,
> or do I need to implement that function myself in the page?
>
> Thanks,
>
> Richard
>
>
> On 7/9/08, Andrew Robinson <[EMAIL PROTECTED]> wrote:
>> Oh, if you queue you own action event you have to use an action
>> listener since selectOneChoice has no action or actionListener
>> attributes.
>>
>> On Wed, Jul 9, 2008 at 9:18 AM, Andrew Robinson
>> <[EMAIL PROTECTED]> wrote:
>> > There is no way to have the selectOneChoice fire an action event, but
>> > you can hack it by removing the autoSumbit.
>> >
>> > <tr:selectOneChoice onchange="click('commandLink')">
>> > </tr:selectOneChoice>
>> >
>> > <tr:commandLink id="commandLink" inlineStyle="display:none;" action="blah" 
>> > />
>> >
>> > Then use the click function to raise the click event on the link. You
>> > can also use the Trinidad PPR API to manually submit an event for the
>> > commandLink. Just make sure you use the full clientId of the
>> > commandLink.
>> >
>> > I have had some ideas on enhancing PPR with Trinidad and the ability
>> > to generate events and wrap events on queuing, but even if ppl. agree
>> > to the design, it would be a while before such a thing was released.
>> >
>> > You could also queue you own action event:
>> >
>> > public void onPropertyChange(PropertyChangeEvent evt) {
>> >  ActionEvent e = new ActionEvent(evt.getSource);
>> >  e.setPhaseId(PhaseId.INVOKE_APPLICATION);
>> >  e.queue();
>> > }
>> >
>> > -Andrew
>> >
>> > On Wed, Jul 9, 2008 at 6:07 AM, Richard Yee <[EMAIL PROTECTED]> wrote:
>> >> Andrew,
>> >> Thanks for your help. We are using JSF 1.1 so I don't think the
>> >> f:setPropertyActionListener solution will work for us. I tried just
>> >> putting tr:subform around the inputText and now it doesn't update it
>> >> at all. Perhaps there is a different way to implement my page?
>> >> The functionality that I am trying to achieve is to use a
>> >> selectOneChoice component to select a person from a list of persons to
>> >> edit. Currently, I am using a valueChangeListener in the
>> >> selectOneChoice to detect when a person is selected and then update
>> >> the input components with that persons information. This is where I am
>> >> having the problem. I would like to avoid using the tomahawk solution
>> >> since the project doesn't currently use tomahawk and I don't really
>> >> want to add it just for this problem. Is there any way to have the
>> >> selectOneChoice fire an action event? If I could do that, then I
>> >> wouldn't need to use the value change listener.
>> >>
>> >> Thanks,
>> >>
>> >> Richard
>> >>
>> >>
>> >>
>> >> On Tue, Jul 8, 2008 at 10:37 PM, Andrew Robinson
>> >> <[EMAIL PROTECTED]> wrote:
>> >>> Value change listeners are fired during validation.
>> >>>
>> >>> What happens:
>> >>>
>> >>> 1) decode
>> >>> 1a) select one choice decoded - submitted value set
>> >>> 1b) input text decoded - submitted value set
>> >>> 2) validation
>> >>> 2a) select one choice converts submitted value
>> >>> 2b) select one choice validates value
>> >>> 2c) select one choice queues value change event (phase = ANY)
>> >>> 2d) input text converts submitted value
>> >>> 2e) input text validates value
>> >>> 2f) input text queues value change event (phase = ANY)
>> >>> 2g) value change events broadcast
>> >>> 3) update model
>> >>> 3a) select one choice updates value
>> >>> 3b) input text updates value
>> >>>
>> >>> As you can see, it is useless to set values in a value change
>> >>> listeners that have UIInput components updating them. In fact, it is
>> >>> very dangerous to make any changes during a value change event,
>> >>> because at that phase, there is absolutely no guarantee that the
>> >>> updating of the model will ever happen. Therefore if your bean sets a
>> >>> property and something short circuits the lifecycle, then the
>> >>> "transaction" is broken.
>> >>>
>> >>> I would suggest one of:
>> >>> 1) use the myfaces tomahawk sandbox valueChangeNotifier that runs
>> >>> during update, not validation:
>> >>> http://myfaces.apache.org/sandbox/tlddoc/s/valueChangeNotifier.html
>> >>> 2) use f:setPropertyActionListener instead of using value change events
>> >>> 3) use tr:subForm around the controls to make sure that when the
>> >>> selectOneChoice is submitted, the inputText is not submitted (note
>> >>> that I don't think that this solution will work for browsers that do
>> >>> not support AJAX)
>> >>>
>> >>> -Andrew
>> >>>
>> >>> On Tue, Jul 8, 2008 at 10:14 PM, Richard Yee <[EMAIL PROTECTED]> wrote:
>> >>>> Hi,
>> >>>> I'm having a problem updating the value of a inputText component from
>> >>>> the value change listener of a selectOneChoice component.  I have the
>> >>>> following in my jspx page:
>> >>>>
>> >>>>  <f:view>
>> >>>>    <tr:document title="Index">
>> >>>>      <trh:body>
>> >>>>        <tr:form>
>> >>>>          <tr:selectOneChoice id="memberSelect" 
>> >>>> value="#{myBacking.selectValue}"
>> >>>>            valueChangeListener="#{myBacking.changeListener}"
>> >>>>            autoSubmit="true" >
>> >>>>            <tr:selectItem label="Item 1" value="1"/>
>> >>>>            <tr:selectItem label="Item 2" value="2"/>
>> >>>>            <tr:selectItem label="Item 3" value="3"/>
>> >>>>          </tr:selectOneChoice>
>> >>>>          <tr:inputText value="#{myBacking.line2}" label="Line 2:"
>> >>>>            partialTriggers="memberSelect" id="line2"/>
>> >>>>
>> >>>>        </tr:form>
>> >>>>      </trh:body>
>> >>>>    </tr:document>
>> >>>>  </f:view>
>> >>>>
>> >>>> My value change listener in my backing bean is
>> >>>>  public void changeListener(ValueChangeEvent evt) {
>> >>>>    setLine2("XXXX");  }
>> >>>> }
>> >>>> When I run the page, if I only change the value of selectOneChoice,
>> >>>> then "XXXX" gets populated in the input text box as I expected.
>> >>>> However, if I type something in the inputText component and then
>> >>>> change the value of the selectOneChoice, the value that I typed
>> >>>> remains in the input text box. If I then change the value of the
>> >>>> select box again, then "XXXX" gets populated in the text box. I'm
>> >>>> wondering why it takes a second time through the value Change Listener
>> >>>> for the input text component to be updated with the value that is set
>> >>>> in the listener method.
>> >>>>
>> >>>> Thanks for any help or suggestions in advance,
>> >>>>
>> >>>> Richard
>> >>>>
>> >>>
>> >>
>> >
>>
>

Reply via email to