2016-11-19 5 views
0

So habe ich eine BohneJSF Vorbei an einer POJO durch Session

public class MyBean 
{ 
private List<MyClassObject> myList; 
//getters and setters 
} 

Die der Klasse MyClassObject Inneren hat eine weitere Liste

public class MyClassObject 
{ 
private List<MySubClassObject>mysubList; 
//getters and setters 
} 

dann ich habe eine JSF Seite

<p:dataTable id="xyz" var="Class" value="#{MyBean.myList}"> 

      <f:facet name="header"> 
       MyClassObjects 
      </f:facet> 

      <p:column headerText="Prop1"> 
       <h:outputText value="#{Class.prop1}" /> 
      </p:column> 
      <p:column headerText="Prop2"> 
       <h:outputText value="#{Class.prop2}" /> 
      </p:column> 
      <p:column headerText="Prop3"> 
       <h:outputText value="#{Class.Prop4}" /> 
      </p:column> 
      <p:column headerText="Sub Classes"> 
       <p:commandButton value="Open Sub Class" url="/faces/pages/SomeOtherPage.xhtml"/> 
      </p:column> 
     </p:dataTable> 

Jetzt ist das Ziel hier, dass ich ein button/commandButton oder irgendetwas zum Klicken verursachen möchte, das zu einer anderen Seite und zur Anzeige navigiert eine andere ähnliche Tabelle der MySubClassObject-Liste, die in dieser bestimmten Zeilenvar gefunden wurde.

Gibt es eine Möglichkeit, die var = "Klasse" an die URL-Ziel übergeben, so dass es von der nächsten Tabelle zugegriffen werden kann (das ist die erforderliche Logik, ich weiß, die Antwort für diese genaue Ausführung ist nein, was ich Bin auf der Suche nach wie man die gleiche Funktionalität richtig erreicht)?

Vielen Dank!

+0

Ich entschuldige mich vor, wenn es Syntaxfehler gibt, da dies definitiv nicht meine Namenskonvention ist und die ursprüngliche Bean ist eine sehr sehr große Anwendungsgebiet, die es sehr schwierig macht, auf die erforderliche Logik hier zu folgen –

Antwort

1

Sie wahrscheinlich brauchen so etwas wie:

<p:commandButton value="Open Sub Class" 
    action="#{MyBean.selectClass(Class)} /> 

In Ihrem 'MyBean' Sie so etwas wie zu schreiben hatte:

public String selectClass(MyClassObject obj){ 
    this.selectedObj = obj; 
    return "/faces/pages/SomeOtherPage.xhtml" 
} 

Hier können Sie "var = Class" durch # Zugriff auf { MyBean.selectedObj}.

Eine wichtige Sache hier ist der Umfang von MyBean. Gut aussehen.

+0

Vielen Dank für die Antwort , aber wie kann ich selectClass (MyClassObject obj) session scoped machen. Das würde für eine einzelne Sitzung gut funktionieren, aber wenn mehrere Sitzungen zu verschiedenen SubClassObjects-Tabellen navigieren, wird dies Probleme auslösen und falsche Objekte öffnen. –

+0

Hi @ a.atlam Es ist mir nicht klar. Die Sitzung ist für den Benutzer und verschiedene Benutzer, die dieselbe Benutzeraktion verwenden, eindeutig. Jeder Benutzer hat eine eigene Sitzung. Wenn "MyBean" Session-Bereich ist lösen Sie Ihr Problem nicht? –

+0

Hi @ Lucas Oliveira Nun eigentlich ist das nicht möglich. MyBean ist Application-Bereich, da es Datenquellen ständig füttern hält. Der Punkt ist, sobald ein Benutzer die gewünschten Datenquellen aus der Haupt-MyBean auswählt, sollte die Umleitung auf diese Quelle zeigen. Das Problem tritt auf, wenn ein zweiter Benutzer eine andere Quelle auswählt und die erste Seite aktualisiert wird. Es wird das falsche Objekt geladen. Vielen Dank, aber du hast mir etwas Inspiration gegeben ... werde etwas versuchen und dich wissen lassen –

Verwandte Themen