Mit GWT ein Widget/Komponente/HTML-Element im Backend erzeugen?

stefanw

Mitglied
So da kommt er nun... mein erster Eintrag in diesem Forum. Ich hoffe ich befinde mich im richtigen Bereich.

Mit GWT ein HTML-Objekt im Backend erstellen...

Ich möchte ein Widget oder Komponente im Backend erzeugen. Dieses Element ins Frontend übertragen und dann an meine ScriptCode binden.

Warum?
Ich habe Geschwindigkeitsprobleme beim Randern und/oder bei der Deserialisierung.

Beispiel (Deserialisierung):
Erzeugen einer ListBox mit 8000 Einträgen. Dabei werden 8000 DTOs in die Listbox eingetragen und per "@Override toString" dargestellt.
Chrome: 20ms
Firefox: 20ms
IE7/8/9: 20000ms -> hier möchte ich den Server die Komponente erzeugen lassen.
IE + ChromeFrame: 20ms
 

jmarc

Mitglied
Wenn es am Rendern liegt, hast du das Problem auch weiterhin, wenn du es serverseitig erstellst, das redern passiert ja im Browser.
Ich würde versuchen eine andere Komponente zu verwenden oder du zeigst in deiner Listbox immer nur 20 Einträge an und wenn der User durchscrollst entfernst du den ersten und fügst hinten einen an.
 

stefanw

Mitglied
Ach... ist eigentlich ganz einfach. :lol:
Java:
greetingService.getFKomponent(new AsyncCallback<String>() {

	@Override
	public void onFailure(Throwable caught) {
		// Schade
	}
	
       @Override
	public void onSuccess(String result) {
		HTML widget = new HTML(); 
		// z.B. <input class=\"gwt-TextBox\" type=\"text\" id=\""+id+"\">
		widget.setHTML(result);
                panel.add(widget);
	}
});
Warum so kompliziert?
Ich habe viele Rechte und je nach RechteSet baut sich das Frontend unterschiedlich auf. Je mehr arbeit ich dem IE abnehmen kann desto schneller wird die Anwendung auf dem Client.
PS: Für mein ListBox Problem habe ich auch eine Lösung gefunden.
 

stefanw

Mitglied
Wenn es am Rendern liegt, hast du das Problem auch weiterhin, wenn du es serverseitig erstellst, das redern passiert ja im Browser.
Ich würde versuchen eine andere Komponente zu verwenden oder du zeigst in deiner Listbox immer nur 20 Einträge an und wenn der User durchscrollst entfernst du den ersten und fügst hinten einen an.


...20 Einträge an und wenn der User durchscrollst...
So hab ich meine Tabelle in GWT gebaut. Ist auch super schnell im FireFox, Chrome und IE9 aber nicht im IE8. Für eine ListBox hab ich aber eine andere Lösung gefunden.

Performance bei 10000 Items IE8
ListBox ca. 33000ms
FastListBox ca. 500ms

Java:
import java.util.List;

import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.ListBox;

public class FastListBox extends ListBox
{
    public FastListBox()
    {
    }

    public FastListBox(boolean isMultipleSelect)
    {
        super(isMultipleSelect);
    }

    public FastListBox(List<String> items)
    {
        super(createElement(items));
    }

    private static Element createElement(List<String> items)
    {
        StringBuilder b = new StringBuilder();
        b.append("<select>");

        for (String item : items)
        {
            b.append("<option>");
            b.append(item);
            b.append("</option>");
        }

        b.append("</select>");

        Element div = DOM.createDiv();
        div.setInnerHTML(b.toString());
        Element select = div.getFirstChildElement();
        select.removeFromParent();

        return select;
    }
}
 
J

JohannisderKaeufer

Gast
Einen Eintrag, der dieses Verhalten erklären könnte wäre dieser

Javascript String Concatenation - Software Secret Weapons

Auf der Seite geht es um das Zusammenbauen einer Tabelle, die im IE 7 recht lange braucht.

Als Ergebnis wird vermutet, dass es an der Art liegt wie Strings zusammengesetzt werden.

Schlußendlich kommt man auf die Idee eines StringBuffers in JS, ähnlich dem, den du serverseitig verwendest.

Die Problematik beim zusammensetzen von Strings in Java und JavaScript scheint ähnlich gelagert zu sein.

Moderne Browser gehen hier aber effizienter vor und verarbeiten += und + nun genauso effizient wie StringBuffer-Implementierungen oder sogar noch schneller.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J JSF-Komponente, in der man ein Klassen-Diagram erstellen kann Web Tier 0
aze Wicket: Komponente und erzeugtes ModalWindow haben unterschiedliche Referenzen Web Tier 0
S Rendern einer Komponente nach actionListener Web Tier 2
F.S.WhiTeY JSF h:dataTable / p:komponente Pagination mit Buchstaben. Web Tier 2
K Suche bestimmte JSF 2 Komponente Web Tier 11
J JSF AJAX-Aufruf ohne Komponente Web Tier 4
P JSF Menüauswahl soll andere Komponente aktualisieren Web Tier 3
J An JSF-Komponente vom Quellcode aus herankommen (JSF 1.2) Web Tier 2
T <f:ajax> in JSF2.0 Komponente ein- und ausblenden Web Tier 4
G MyFaces PanelTab Komponente: Tabs in mehrern Zeilen möglich? Web Tier 3
M In einer HTML Tabelle positionieren Web Tier 4
I HTML nach Image Web Tier 1
S Einträge aus Datenbank einzeln darstellen (JSP, JAVA, HTML) Web Tier 9
J Welches Programm visualisiert mir einen html-Dom als Baumdiagram? Web Tier 5
G HTML Fragment in Bean erzeugen? Web Tier 1
E Wie kann ich dynamische HTML- Tabellen(-spalten) mit JSP aus SELECT-Anweisung erstellen? Web Tier 2
T Spring HTML Tabellen sortieren, filtern, Attribute ausblenden Web Tier 3
D Servlet Servlet Weiterleitung static html Web Tier 5
K Wicket: Pfad zu HTML Dateien ändern/erweitern Web Tier 2
S JSP STRUCT Elemente in HTML Tabelle Web Tier 8
L JSF, no tag was defined for name: html Web Tier 5
S JSP Erzeugten JSP HTML-Quelltext in html-Datei speichern Web Tier 4
V JSF JSF und Standard HTML-Tags Web Tier 7
J JSF Verwirrung: JSF und generiertes HTML sieht 'cryptisch' aus Web Tier 18
S JSP HTML+CSS in JSP einbinden Web Tier 4
T Richtige Aussgabe in eine HTML mit JSF Web Tier 2
S Auswahl eine Zeile von einer HTML Tabelle im Servlet Web Tier 4
S HTML Output verschleiern Web Tier 6
B statische Html Seite als response erhalten (Servlet) Web Tier 3
P Problem mit HTML.Tag.OPTION Web Tier 3
J response HTML verwenden Web Tier 2
S HTML Seite als PDF Web Tier 6
F HTML select auslesen Web Tier 3
D Formular als Applet oder HTML Web Tier 6
E Suche Wiki Markup -> HTML rendering engine Web Tier 7
M html + jquery(javascript-framework): elegantes und flexibles Formulardesign Web Tier 5
D <html:select> bzw. <html:option> - Methode auslösen ? Web Tier 2
T JBoss + Servlet + HTML Fileupload + Encoding Web Tier 1
J Wie realisiert man einen HTML-Chat? Web Tier 3
K JSF und HTML-Code Web Tier 2
O JSP: HTML tags werden vor struts tags angezeigt Web Tier 3
F Java Applets in html einbinden Web Tier 10
ff html:text aus mapped properties rendern Web Tier 2
? XML Parsen - IDs auslesen - HTML generieren Web Tier 11
A Struts - JSP - HTML - Visualisierungsproblem Web Tier 3
S Probleme mit den Nav_rules und HTML code Web Tier 2
T HTML Darstellungsproblem Web Tier 3
T html login und apache client Web Tier 13
H Java Servlet und HTML Form Web Tier 3
G MyFaces: HTML Ausgabe Code steuern Web Tier 8
B Struts: html:checkbox Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben