2013-01-23 2 views
2

Я пытаюсь передать параметр на другую страницу. У меня есть категория изображений, и этот список находится в области сеанса, для каждой из этих категорий в моем шаблоне заголовка создается ссылка.JSF Передача параметра и перенаправление на область просмотра

Я хотел бы перенаправить на новую страницу и передать выбранную категорию.

<h:dataTable id="categoryMenu" value="#{menuBean.listCategory}" var="category"> 
    <h:column> 
     <h:link value="#{category.name}" 
    outcome="/image/imageList.xhtml" > 
     </h:link> 
    </h:column> 
</h:dataTable> 

Но теперь я хотел бы, чтобы моя страница imageList.xhtml связана с ImageListBean.java получить выбранную категорию.

Я пробовал много вещей, запрашивая параметры GET с помощью параметра f: param, но поскольку мой ImageListBean.java должен быть таким, как view scoped, он не работает.

ответ

7

Ваш факс ViewScoped не должен быть проблемой. С помощью этого кода:

<h:link value="#{category.name}" outcome="/image/imageList.xhtml"> 
    <f:param name="categoryName" value="#{category.name}"/> 
</h:link> 

вы должны быть в состоянии получить доступ этот параметр в вашем бэк-боба с этим:

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("categoryName") 
+0

Спасибо, что сделал трюк! – markand

2

Вы пробовали viewParam на imageList.xhtml?

<f:metadata> 
    <f:viewParam name="id" value="#{bean.id}" /> 
</f:metadata> 

Это делает в основном следующие:

  • Получить значение параметра запроса по имени идентификатора.
  • Преобразуйте и подтвердите его, если необходимо (вы можете использовать необходимые, валидатор и атрибуты конвертера и вложить a и в него, как и в случае)
  • Если преобразование и проверка завершены успешно, установите его как свойство bean, представленное # {bean .id}

вы можете передать идентификатор категории по итоговому ссылке (imageList.xhtml? ID = 1, например) и получить его на ImageListBean, когда у вас есть параметр «ID» вы могли бы получить категорию поиск в вашей БД.

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