2013-03-15 2 views
0

Я использую JSF2, и мне нужно иметь возможность передавать параметр с одной страницы JSF на другой с помощью commandLink.Просмотреть параметр при переходе на другую страницу

Я на странице funding.xhtml (ViewScoped) и имеют следующую ссылку определены:

<p:commandLink styleClass="toolbar" 
       action="/application/customerApplicationManagement.jsf"> 
    <p:graphicImage url="/resources/gfx/search.png" /> 
    <h:outputText value="#{msg.menu_searchApplications}" styleClass="toolbarLink" /> 
</p:commandLink> 

Мне нужно передать значение строки страницы customerApplicationManagement указывающей, какие страницы я пришел из так, что после выбора приложения, Я могу вернуться на эту страницу. Я пробовал несколько предложений о том, как передать это значение, включая f:param, f:viewParam. Я даже попробовал просто добавить его прямо к URL-адресу () и т. Д., Но все они работают только тогда, когда значение передается на текущую страницу, а не на новую страницу, к которой я перехожу.

Может ли кто-нибудь показать мне, как это лучше всего сделать.

ответ

0

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

Чтобы не повториться, здесь есть много ответов, посвященных использованию того или иного метода, поэтому я, конечно, дам вам лучшие ссылки, на мой взгляд.

  1. How can I pass a parameter to a commandlink inside a datatable;
  2. ViewParam vs @ManagedProperty;
  3. What can <f:metadata> and <f:viewParam> be used for.

Что касается использования кнопок «Назад» в JSF, вы также можете взглянуть на мой собственный ответ на How to get back to the same page in JSF.

Кстати, использование POST для навигации по страницам считается плохой практикой. Если вам нужно только перейти на другую страницу, лучше использовать вместо этого <h:link> или <h:button>.

2

Использование <f:param> и <f:viewParam>:

Источник страницы:

<p:commandLink styleClass="toolbar" 
      action="/application/customerApplicationManagement.jsf"> 
    <p:graphicImage url="/resources/gfx/search.png" /> 
    <h:outputText value="#{msg.menu_searchApplications}" styleClass="toolbarLink" /> 
    <f:param name="fromPage" value="funding.xhtml" /> 
</p:commandLink> 

Целевая страница (связанно):

<f:metadata> 
    <f:viewParam name="fromPage" value="#{destinationBacking.fromPage}" /> 
</f:metadata /> 

<h:link value="Go back!" outcome="#{destinationBacking.fromPage}" /> 

Целевая страница (несвязанный):

<f:metadata> 
    <f:viewParam name="fromPage" /> 
</f:metadata /> 

<h:link value="Go back!" outcome="fromPage" /> 

Резервного боб (только если вы хотите, чтобы связать параметры):

@ManagedBean 
@ViewScoped 
public class DestinationBacking{ 
    String fromPage; 

    public String getFromPage(){ 
     return fromPage; 
    } 

    public void setFromPage(String frompage){ 
     fromPage = frompage; 
    } 
} 

Вашего мнение путь будет переплетен в fromPage собственности от назначения основы компоненты и после того, как вы можете использовать его для вернуться на исходную страницу.

Также я хочу сказать, что этот способ немного «взломан» конечным пользователем, я имею в виду, что вы передаете исходный путь через чистый URL-адрес. Смотрите также другие способы достижения этого, как flash scope, что очень полезно, особенно если вы работаете с фасолью @ViewScoped.

+0

Обратите внимание, что 'finance.xhtml' приведет к неправильному расположению с высокой вероятностью. В качестве значения параметра предпочтительно указывать '# {view.viewId}'. Кроме того, бэкэн-бэк не нужен в этом случае на странице получателя. – skuntsel

+0

'finance.xhtml' - это место, о котором сказал ОП, поэтому я использую это. О привязке адресата необязательно, но я обычно привязываю свои значения к бэк-файлу. Тем не менее, OP будет нуждаться в компоненте поддержки назначения, даже если параметр не связан, чтобы управлять логикой страницы получателя. –

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