2013-09-20 3 views
0

Я использую SessionScoped Managed Beans в моем приложении:Доступ к SessionScoped Фасоль в страницах JSF

@ManagedBean 
@SessionScoped 
public class SampleBean{ 

private String value; 

//getters and setters 

} 

У меня есть контроллер:

@ManagedBean 
@SessionScoped 
public class SampleController{ 

@ManagedProperty(value = "#{sampleBean}") 
private SampleBean sampleBean; 

public String showConfirm() { 

return "confirm"; 

} 

public String showComplete() { 

return "complete"; 

} 

//getters and setters 
} 

Логика в том, что, у меня есть страница запуска, где я введите значения. Затем он перейдет на страницу подтверждения, а затем, наконец, на страницу «Полный». Я должен показать данные, введенные на стартовой странице на оставшихся страницах.

страница запуска выглядит следующим образом:

startup.xhtml

<h:inputText value="#{sampleBean.value}"> 
<h:commandLink value="Confirm" action="#{sampleController.showConfirm()}"> 

На странице подтверждающим, я хочу, чтобы показать эти данные.

confirm.xhtml

<h:outputFormat value="#{sampleBean.value}"> 

Однако, я не получаю значение, отображаемое здесь. Я попытался помещать эти значения в sessionMap в методе showConfirm().

public String showConfirm() { 

FacesContext context = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("sampleBean", sampleBean); 

return "confirm"; 

} 

Но также я не могу просмотреть эти значения в файле confirm.xhtml.

Только если я использую <h:outputFormat value="#{sessionScope.sampleBean.value}">, значения будут отображаться. Кроме того, я хотел бы сделать это, используя SessionScope только потому, что все это является частью более крупного приложения с сеансами. Есть ли альтернатива?

+0

Вы забыли использовать '' тег? –

+0

Спасибо, но я использовал '' тег. Я верю, что в своем контроллере я ошибаюсь. –

ответ

0

Вы можете получить доступ к SessionScoped бобы из представлений через боба контроллера по:

<h:inputText value="#{sampleController.sampleBean.value}"> 

С добавлением геттер/сеттер этого Managed-собственности в компоненте контроллера.

+0

Я попытался дать '' в 'confirm', но он все еще не отображает значения. –

+0

Может быть, вам что-то не хватает в представлении ... можете ли вы опубликовать код вида? – Omar

+0

Я попытался распечатать sessionScope, используя '' My 'SampleController' не отображается в сеансе. Я считаю, что делаю что-то неправильно в моем SampleController. –

0

сеанс областью действия боб должен реализовывать Serializable интерфейс для работы должным образом видеть this

+0

Владелец вопроса не указывает на обнаруженное исключение; Более того, пример отлично работает со мной без реализации 'Serializable'. – Omar

+0

Я попытался реализовать интерфейс 'Serializable', но все же не работал. –

Смежные вопросы