2016-11-19 6 views
0

Так что у меня бобJSF Передача POJO через сессию

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> 

Теперь цель здесь в том, что я хочу создать кнопку/commandButton или что-то щелкнуть, чтобы перейти на другую страницу и отобразить другая подобная таблица списка MySubClassObject, найденная в этих конкретных строках var.

Есть ли способ передать 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" 
} 

Здесь вы можете получить доступ к "переменная = класс" через # { MyBean.selectedObj}.

Одна важная вещь здесь - область действия MyBean. Хороший взгляд.

+0

Спасибо большое за ответ , но как я могу создать сеанс selectClass (MyClassObject obj). Это будет хорошо работать для одного сеанса, но если несколько сеансов, перемещающихся в разные таблицы SubClassObjects, это вызовет проблемы и откроет неправильные объекты. –

+0

Hi @ a.atlam Мне это непонятно. Сеанс уникален пользователем и разными пользователями, использующими один и тот же случай пользователя, каждый пользователь будет иметь свой собственный сеанс. Если «MyBean» - это область сеансов, решите вашу проблему нет? –

+0

Привет @ Лукас Оливейра Ну на самом деле это невозможно. MyBean является областью применения, поскольку он постоянно питает источники данных. Дело в том, что, как только пользователь выбирает источники данных, которые он хочет, из основного MyBean, перенаправление должно указывать на этот источник. Проблема возникает, если второй пользователь выбирает другой источник и сначала обновляет страницу. он загрузит неправильный объект. Большое спасибо, хотя вы дали мне некоторое вдохновение ... попробуете что-нибудь и дадите знать –