Hi!

Thanks for the reply. Using the selected and tag parameters worked out for me. Now, I do something like:

public void submitListener(IRequestCycle cycle) {

       // act according to how the form was submitted
       if (!getWasSubmittedFromSubmitButton()) {
           processOnChangeEvent(cycle);
           return;
       }

       //process the regular form submit
}

Again, thanks for the hint.

/Martin


Shing Hing Man wrote:
Is there a simple way to have the form to be
submitted with a specific listener on my onChange event of my @PropertySelection, and also to have my submit button calling the "regular" listener (the one specified in the @Form component?

I do not know whether there is a simple way of doing
the above. But have you trying using the paramaters
selected and tag in the submit component ?

http://jakarta.apache.org/tapestry/tapestry/ComponentReference/Submit.html

With them, you can distinquish in your form listener
onChangeEventPropertySelectionListener, whether the form submission is triggered by a change in
PropertSelection or the submit button has been
clicked. Once you know how the form submission is
triggered, you can act accordingly.

Shing

--- Martin Carel <[EMAIL PROTECTED]> wrote:

Hi folks!

I have a problem involving validation and submit
listeners.


Here is the (simplified) HTML template:

<form jwcid="@Form"
listener="ognl:listeners.onChangeEventPropertySelectionListener"
delegate="bean:delegate">
  <select jwcid="[EMAIL PROTECTED]"
id="countrySelect" value="ognl:country" model="ognl:countriesModel" onChange="this.form.submit()"/>

  <span jwcid="@FieldLabel"
field="component:pickupDatePicker"/></span>
  <span jwcid="pickupDatePicker"/>
  <input type="submit"
listener="ognl:listeners.searchSubmitListener" jwcid="@Submit" value="Search"/>
</form>


Here is the spec:

<component id="pickupDatePicker" type="DatePicker">
  <binding name="validators"
value="ognl:{beans.required,beans.maxDate}"/>
  <binding name="value" value="ognl:pickupDate"/>
  <binding name="displayName" value="literal:Pick up
date"/>
</component>

<bean name="delegate"
class="com.utils.MyValidationDelegate" property="delegate"/>

<bean name="required"

class="org.apache.tapestry.form.validator.Required"/>
<bean name="maxDate"
class="org.apache.tapestry.form.validator.MaxDate">
  <set name="maxDate" value="new java.util.Date()">
  </set>
</bean>


And MyValidationDelegate is exactly (apart from the
package name) the class on
http://jakarta.apache.org/tapestry/UsersGuide/validation.html#validation.delegate
This code worked great until I wanted to support
server-side validation. As I understand, server-side validation is only possible with the listener specified in the @Form component (and *not* with the one specified in the @Submit component). But I was using the listener belonging to the @Form for my onChange event of my @PropertySelection component, and using the listener belonging to the @Submit for the actual form submission.

Is there a simple way to have the form to be
submitted with a specific listener on my onChange event of my @PropertySelection, and also to have my submit button calling the "regular" listener (the one specified in the @Form component?

I tried to add a (hidden) @Submit component, which
would be clicked via JS on the onChange event of my @PropertySelection, but not only the listener for that @Submit component is called, but *also* the listener defined in the @Form component :(

Note: returning the same page in the first listener
(associated with the @Submit component) didn't work out, the other
listener is also called!

I'm stuck.

/Martin



---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED]
For additional commands, e-mail:
[EMAIL PROTECTED]




Home page :
  http://uk.geocities.com/matmsh/index.html


        
        
                
___________________________________________________________ Yahoo! Messenger - NEW crystal clear PC to PC calling worldwide with voicemail http://uk.messenger.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to