Hi,

I am trying to upgrade from Tapestry 5.3 to 5.4 and I encountered a problem 
with built-in mixin Autocomplete.

It is quite useful if the mixin takes effect just if some condition is met. So 
I have implemented a custom mixin by subclassing the built-in one.

Here is the important snippet of code:

public class ConditionalAutocomplete extends Autocomplete
{
    @Parameter(name = "test", required = true, allowNull = false, defaultPrefix 
= BindingConstants.PROP)
    private boolean enabled;

    ...

    @Override
    protected void configure(final JSONObject config)
    {
        super.configure(config);
        if (!enabled)
        {
            config.put("frequency", 365 * 24 * 60 * 60); // fire an Ajax 
request after the "ethernity" elapses
            config.put("minChars", 1000000000); // at least "infinity" 
characters must be entered to fire an Ajax request
        }
    }

    ...
}

I admit that disabling the feature by setting frequency and minChars to 
ethernity and infinity is somewhat tricky and can be considered as dirty. On 
the other hand, I have achived the required feature by reusing the existing 
built-in mixin with all its features.

The mixing can be used in a template file like this:

<t:textfield value="userEmail" t:mixins="conditionalAutocomplete" 
test="userAutocompleteSupported"/>

The built-in mixin Autocomplete seems to be rewritten in Tapestry 5.4 and there 
is no method configure anymore.

Is there any chance to implement the ConditionalAutocomplete with Tapestry 5.4?

I can copy the code of Autocomplete.java and make some changes in it instead of 
subclassing. However, I am trying to find some better solution as such copying 
can cause troubles in next Tapestry upgrade.

Thanks for help.

Jarda
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to