2016-11-19 68 views
0

傳遞一個POJO所以我有一顆豆JSF通過會話

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

的類MyClassObject其內部具有另一個列表

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

然後我有一個JSF頁面

<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> 

現在這裏的目標是我想創建一個按鈕/命令按鈕或任何點擊,將導航到另一個頁面和顯示在特定行var中找到的另一個類似MySubClassObject List的表。

有沒有辦法將var =「Class」傳遞給url目標,以便它可以被下一個表訪問(這是所需的邏輯我知道對於確切的執行流程的答案是否定的,我我期待的是如何正確地實現相同的功能)?

非常感謝!

+0

如果出現語法錯誤,我很抱歉,這不是我的命名約定,原始bean是一個非常大的應用程序範圍的一個,這將使得很難在此處遵循所需的邏輯 –

回答

1

你可能需要的東西,如:

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

內,您的 '爲myBean' 你不得不寫類似:

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

在這裏,你可以通過#訪問 「VAR = A類」{ MyBean.selectedObj}

這裏一個重要的事情是MyBean的範圍。好看。

+0

非常感謝響應,但我怎樣才能使selectClass(MyClassObject obj)會話範圍。這對於單個會話來說很好,但是如果多個會話導航到不同的SubClassObjects表,這會觸發問題並打開錯誤的對象 –

+0

Hi @ a.atlam我不清楚。該會話由用戶和使用相同用戶案例的各種用戶所獨有,每個用戶都將擁有自己的會話。如果「MyBean」是會話範圍解決你的問題沒有? –

+0

嗨@盧卡斯奧利維拉其實這是不可能的。 MyBean是Application的範圍,因爲它可以持續提供數據源。重點在於,一旦用戶從主MyBean中選擇了他想要的數據源,重定向應指向該源。如果第二個用戶選擇其他來源並且第一個用戶刷新頁面,則會出現問題。它會加載錯誤的對象。非常感謝你給我一些啓發......會嘗試一些並讓你知道 –