2017-08-23 2 views
1

Ich versuche, den Mixins zoneUpdater von Tapestry zu verwenden, um ein Ereignis auszulösen, wenn ich in ein Textfeld schreibe. Jedoch habe ich die folgende Fehlermeldung erhalte:Onkeyup Ereignisse mit Tapestry 5.2.6

Failure creating embedded component 'myComponent' of com.mycompany.myapp.web.pages.tapestryTest.testEdit: Unable to resolve 'zoneUpdater' to a mixin class name. 

Hier ist der Code in der tml Seite:

<div t:type="zone" t:id="myZone" id="myZone" update="show"> 
<table><tr> 
    <td class="td-right-view"><t:label for="myComponent"/></td> 
    <td class="td-left-view"><t:textfield t:id="myComponent" 
    value="myValue" t:validate="maxlength=8" maxlength="8" 
    style="width:70px;" t:mixins="zoneUpdater" t:clientEvent="keyup" 
    t:event="updateMyValue" t:zone="myZone"/></td></tr> 
</table 
</div> 

In der Steuerung ich die folgende Methode definiert:

@OnEvent(component = "updateMyValue") 
Object onupdateMyValue() 
{ 
    if (this.value.length()==8){ 
     //does something 
    } 

    return myZone.getBody(); 
} 

Jede Idee, warum Ich bekomme dieses Problem immer wieder? Ich mache dasselbe wie beim Start, aber aus irgendeinem Grund erkennt es zoneUpdater nicht. Ich verwende Tapestry 5.2.3, also sollte es funktionieren, ohne die Klassen von Jumpstart zu erstellen.

Vielen Dank im Voraus, Remi

Antwort

1

Tapestry selbst ZoneUpdater genannt keine mixin haben. Die auf Jumpstart-Seiten beschriebene (z. B. http://jumpstart.doublenegative.com.au/jumpstart7/examples/ajax/onevent) ist eine benutzerdefinierte. Siehe diesen Link für den Quellcode. Fügen Sie diesen Code einfach in Ihr Projekt ein.

+0

Ich habe es ausprobiert und es hat funktioniert, danke! Ich habe einen anderen Weg gefunden, es zu tun, ich werde es hier so bald wie möglich posten. – Remi