2012-04-06 6 views
0

Einer meiner JSF empfängt Parameter über Metadaten und f: ViewParm-Tag. Ich verwende diese Parameter in der Back-Bean in der Pre-Render-Ansicht, um die Datenbank abzufragen und meine Liste für die Datentabelle zu erstellen. Es funktioniert gut, aber jetzt muss ich zu lazyDataModel wechseln (ich benutze Primefaces 3.2). Wenn ich den Beispielen folge, dann muss ich LazyDataModel implementieren, was im Konstruktor der Backing-Bean gemacht wird. Ich kann das, aber dann habe ich keinen Zugriff auf die Parameter. Meine Frage ist, wie kann ich die Parameter greifen und an meine Klasse übergeben, die LazyDataModel implementiert (sagen wir LazyCarDataModel). Ich möchte diese Parameter in der überschriebenen Lade-Methode von LazyCarDataModel verwenden. Es gibt keine Möglichkeit, auf eingehende Parameter in meinem Konstruktor zuzugreifen. Irgendwelche Vorschläge/Tricks, um mit dieser Situation umzugehen, werden geschätzt.Übergabe von Parametern an eine Klasse, die LazyDataModel implementiert

Peter

Antwort

1

Sie könnten <f:event type="preRenderView"> verwenden, um eine Backing Bean Methode aufzurufen, nachdem die Ansicht Parameter eingestellt sind.

z.

<f:metadata> 
    <f:viewParam name="carId" value="#{bean.car}" converter="#{carConverter}" /> 
    <f:event type="preRenderView" listener="#{bean.init}" /> 
</f:metadata> 

mit

private Car car; 
private transient DataModel<Something> model; 

public void init() { 
    model = buildSomehowBasedOn(car); 
} 

Sie könnten alternativ auch träges Laden in dem Getter der Datentabelle einzuführen.

public DataModel<Something> getModel() { 
    if (model == null) { 
     model = buildSomehowBasedOn(car); 
    } 

    return model; 
} 
+1

Vielen Dank und ein wunderbares Wochenende. Ihre Hilfe wird immer von vielen geschätzt. – Peter