2012-03-30 7 views
-1

nach dem Tapestry 5.3.2 zu aktualisieren, mein @ActivationRequestParameter funktioniert nicht mehr ..T 5.3.2 Dynamische Buttons in ajaxform

eine Form wie dieser Versuch

<t:zone t:id="formZone" id="formZone" t:update="show"> 
    <form t:id="ajaxForm" t:type="form" t:zone="formZone" style="border: 2px solid #eee; padding: 15px"> 

     <input type="submit" id="sub" type="submit" value="Accept"/><br/><br/> 

     <t:errors/> 

     ${form} 

    </form> 
</t:zone> 

mit der Eingabe des ID zu fangen wie diese

@ActivationRequestParameter("t:submit") 
private String submitter; 

void onSuccess() { 
    logger.debug("onSuccess ," +submitter); 

    if (request.isXHR()) { 
     ajaxResponseRenderer.addRender(formZone); 
    } 
} 

gibt mir den Fehler

org.apache.tapestry5.runtime.ComponentEventException 
Input string '["sub","sub"]' is not valid; the character '[' at position 1 is not valid. 

org.apache.tapestry5.ioc.internal.OperationException 
Input string '["sub","sub"]' is not valid; the character '[' at position 1 is not valid. 

java.lang.IllegalArgumentException 
Input string '["sub","sub"]' is not valid; the character '[' at position 1 is not valid. 

Filter Stapelrahmen Stapelüberwachung

org.apache.tapestry5.internal.services.URLEncoderImpl.decode(URLEncoderImpl.java:144) 
    org.apache.tapestry5.internal.transform.ActivationRequestParameterWorker$2.handleEvent(ActivationRequestParameterWorker.java:128) 
    org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$TransformationSupportImpl$1$1.invoke(ComponentInstantiatorSourceImpl.java:443) 

behavoir Wunsch

eigentlich mein Ziel ist es, bekommen vorlegen-Eingänge dynamisch in der Form über

<t:outputraw value="buttonHtml"/> 

wie

public Object getButtonHtml(){ 

    ContentType contentType = new ContentType("text/plain");//responseRenderer.findContentType(this); 
    MarkupWriter writer = factory.newPartialMarkupWriter(contentType); 


    if(isFavorite){ 
     writer.element("input").attribute("type", "submit").attribute("class", "sButton") 
     .attribute("id", ACTION_REMOVE).attribute("value", messages.get("button_removeFavorite")); 
     writer.end(); 
    } else { 
     writer.element("input").attribute("type", "submit").attribute("class", "sButton") 
     .attribute("id", ACTION_ADD).attribute("value", messages.get("button_addFavorite")); 
     writer.end(); 
    } 


    return writer.toString(); 
} 

alle Hinweise sind herzlich willkommen: D

+0

keine für eine Schaltfläche, um eine Lösung, die ich habe mit durch seinen Wert zu ändern, wie: ' ', aber was ist, wenn ich eine dynamische Nummer des Buttons haben möchte ... ?? –

Antwort

0

die für mich

@Inject 
private Request request; 
..request.getParameter("t:submit"); 

hat den Trick

1

Ich weiß nicht, warum Sie möglicherweise eine Schaltfläche mit Raw-Ausgabe erstellen möchten? Schauen Sie sich zumindest die Dokumentation an und machen Sie eine custom component.

Werfen Sie einen Blick auf die Quelle der Checklist-Komponente. Es buils eine Liste der Render Object (die availableOptions Liste) und macht dann die in einer Schleife (wie in der Vorlage Checkliste zu sehen)

Außerdem Ihre Eingabe-Taste in ein tapestry submit button drehen sollte zumindest die Fehler beheben.

+0

danke, für die antwort, ich möchte die schaltflächen nach dem status des anwenders erstellen. Ich werde versuchen, den Wandteppich Knopf thoe –

+1

gerade darüber nachzudenken. Noch einfacher als ein Renderer zu erstellen wäre, wenn Sie ein benutzerdefiniertes Objekt erstellen, das Aktion und Kontext für einen einzelnen Link enthält. Fügen Sie diese dann in eine Liste ein (angepasst an Ihren Benutzer) und führen Sie eine t: -Schleife aus, die einen t: submitlink für jedes dieser Objekte rendert. Dann brauchen Sie nur eine onSubmit (Context blah) -Methode, die über den Kontext entscheiden kann, was zu tun ist. – dube

+0

THX für die Eingänge;) - mit der Schleife mit 'dynamischen' IDs gemacht die Methoden onSubmit .. oder onSuccess .. unbekannt, so Fehler .. konnte nicht die Senden-Taste zu arbeiten, da diese auch identifiziert werden müssen, dasselbe für Linksubmit (was ich denke, dass du mit submitlink gemeint hast) –