2011-02-03 3 views
1

У меня есть один класс под названием Foo. И один ManagedBean называется FooBean. На странице (Facelet) я получаю новую информацию о Foo от пользователя и вставляю ее в DB. После первой подачи данных кнопка печати будет включена. Теперь мне нужно, чтобы пользователь нажал кнопку печати и увидел другую страницу (Facelet), которая является страницей печати с PrintFooBean. Как передать идентификатор недавно вставленного Foo в PrintFooBean и загрузить его и отобразить его элементы на странице печати?Передача данных между ManagedBeans

Каков наилучший способ? И я предпочитаю, чтобы пользователь просматривал страницу печати в новом окне браузера/вкладке.

+0

http://balusc.blogspot.com/2006/06/communication-in-jsf.html –

+1

@org: эта статья все еще ориентированы на JSF 1.2. В JSF 2.0 есть так много лучших/лучших способов. – BalusC

ответ

1

Передайте его как параметр запроса.

<a href="print.jsf?id=#{foo.id}" target="_blank">print</a> 

или ненавязчиво постепенно повышается за счет JS window.open

<a href="print.jsf?id=#{foo.id}" target="_blank" 
    onclick="window.open('print.jsf?id=#{foo.id}'); return false;">print</a> 

занесения печати фасоли с id.

@ManagedProperty(value="#{param.id}") 
private Long id; 

поджать Foo данные в одном компоненте на основе id.

@PostConstruct 
public void init() { 
    this.foo = fooDAO.find(id); 
} 
+0

Вот что я сделал до сих пор, но есть ли какое-либо стандартное решение JSF вместо target = "_ blank" или JS? – ehsun7b

+1

Не в стандартной реализации JSF. Для конфеты вам нужно отправиться в стороннюю богатую библиотеку компонентов JIF UI. Например, [PrimeFaces] (http://primefaces.org), который имеет [''] (http://www.primefaces.org/showcase/ui/dialog.jsf) для этой цели или даже ['' ] (http://www.primefaces.org/showcase/ui/datatableRowSelectionInstant.jsf) с мгновенным выбором строки. – BalusC

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