Andrew,
Thanks. That worked great.

-Richard


On Wed, Jul 9, 2008 at 9:40 AM, Andrew Robinson
<[EMAIL PROTECTED]> wrote:
> 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