1

Derzeit mache ich Struts Up-Gradation Aufgabe (Struts2.0 zu Struts2.5). Ich möchte Struts Dojo-Tag mit Struts-Jquery ersetzen.Struts2 jQuery Autocompleter funktioniert nicht

Hier habe ich ein Problem, wenn Struts-Dojo Autocompleter zu Struts-jQuery Autocompleter ersetzen.

Erste unten Antwort vom Server:

[ 
    { 
    "firstName": "Bulwark Technologies LLC", 
    "partnerId": 925 
    }, 
    { 
    "firstName": "Bulwark Technologies LLC1", 
    "partnerId": 926 
    }, 
    { 
    "firstName": "Bulwark Technologies LLC2", 
    "partnerId": 927 
    } 
] 

Für auf Client-Seite Anzeige Ich verwende Struts2-Jquery-Autocompleter -

<sj:autocompleter href="%{urlpartnerList}" list="%{partnerNameListBeanStruts2}" listValue="firstName" listKey="partnerId"/> 

ich „undefined (mehrfach bekommen - basierend auf Ergebnis gefunden in der Abfrage auf Serverseite) "in Textbox.

Könnte jemand bitte hier helfen? Danke im Voraus.

enter image description here

+1

Ich denke, dass Ihr Attributwert für "Liste" falsch ist. Ich benutze immer so etwas: '{" mylist ": [{" key ":" 1 "," Wert ":" Foo "}, {key:" 2 ", Wert:" Bar "}]}' und der autocompleter: '' – beendr

+0

Vielen Dank. Ich habe getan, wie Sie vorgeschlagen haben und jetzt funktioniert es gut. Aber Es gibt auch ein Problem. Wenn ich Element auswähle, dann auf der Auswahl wird es Daten mit ID füllen. Wie ich "Bar" dann suchte, wählte ich Stange vom Vorschlag aus, in der Textbox wird es 2 auf Auswahl von "Bar" zeigen. Was sollte ich Mach es hier, Danke im Voraus. –

+1

Versuchen Sie, das Attribut 'label' zu verwenden, werfen Sie einen Blick auf [Showcase] (http://struts.jgeppert.com/struts2-jquery-showcase/index).Aktion) -> Widgets -> Autocompleter -> Autocompleter JSON – beendr

Antwort

0

Meine Vorschläge in den Kommentaren führen Sie in die falsche Richtung, mit diesem <sj:autocompleter/> sollte es völlig in Ordnung arbeiten, ohne dass es die Antwort des Servers zu ändern. Ich habe die verschiedenen Optionen, die für dieses Tag verfügbar sind, vermasselt.

<sj:autocompleter href="%{jsonAction}" listKey="partnerId" listValue="firstName" name="firstname"/> 

Wie kann ich den Wert des Label-Element erhalten?

Der Trick mit diesem Autocompleter ist, dass die listValue als Auswahl im sichtbaren Textfeld angezeigt wird, aber die listKey wird als Wert in einem versteckten Feld verwendet. Und dieses versteckte Feld wird verwendet, um den Wert zurück an den Server zu senden. Das sollte auch Ihre Frage beantworten:

Die <sj:autocompleter/> wird folgende HTML-Code erstellen:

<input type="hidden" name="firstname" value="HERE_IT_WILL_PUT_THE_LIST_KEY"/> 
<input type="text" name="firstname_widget" value="HERE_IT_WILL_PUT_THE_LIST_VALUE"/> 

Damit Sie nur den listKey-Tag mit der Liste Eigenschaftsnamen festlegen müssen Sie als Antwort haben wollen.