2011-01-06 15 views
4

Ich bin versucht, dynamisch zu Diagrammen erzeugt die JFreeChart Bibliothek und sie an einen Benutzer auf dem Front-End anzuzeigen. Mein Projekt wird mit JSF 1.2 als View-Technologie, und wir versuchen, eine Strategie zu bestimmen, um ein BufferedImage anzuzeigen.dynamische Diagramms Generation/Pass Objekt Servlet von JSF 1.2

Bisher die beste Option scheint die Grafik mit einem Servlet und h:graphicImage an dieser Stelle darauf hinweisen verwenden, um zu erzeugen. Die primäre Frage lautet: Wie kann ich ein Objekt von JSF an das Servlet übergeben, damit die Diagrammgenerierung basierend auf den Werten im Objekt dynamisch ist?

Antwort

4

Lassen Sie JSF die Sitzung in einen automatisch generierten und eindeutigen Schlüssel einfügen, übergeben Sie diesen Schlüssel als Anforderungsparameter oder Pfadinfo an das Servlet und lassen Sie das Servlet schließlich durch den Schlüssel aus der Sitzung entfernen und verwenden Sie es.

JSF bean (während init oder Aktionsmethode):

this.key = UUID.randomUUID().toString(); 
externalContext.getSessionMap().put(key, object); 

JSF-Ansicht:

<h:graphicImage value="servleturl?key=#{bean.key}" /> 

Servlet:

String key = request.getParameter("key"); 
Object object = request.getSession().getAttribute(key); 
request.getSession().removeAttribute(key); 
// ... 
+0

Diese Lösung ist wahrscheinlich das Beste für unser Szenario und arbeitete sehr schnell nach unserem ersten Test. Wir müssen eine Sammlung von Daten in einem Objekt speichern, die zum Generieren eines grafischen Diagramms verwendet werden kann. Diese Daten würden nicht ideal als Teil Parameter der URL übergeben, so dass wir bewusst bleiben müssen, was in der Sitzung gespeichert wird, so dass wir die Dinge mager halten. – rynmrtn

+0

Gern geschehen. – BalusC

2
persönlich

, ich würde es vorziehen, die Daten zu übergeben, wie Dadurch wird vermieden, dass der Server-Status verwendet wird, und der Diagrammdienst wird leichter externalisiert. Sie können jedoch auf einige practical limitations stoßen, wenn Ihr Datensatz groß ist.

Verwandte Themen