Как перенаправить в Liferay Portal с помощью JSF

как перенаправить на другую страницу внутри портлета в liferay с помощью jsf? Я пробовал window.location.href через javascript, но он пытается перенаправить страницу, а не портал.


person Faisal Amjad    schedule 22.12.2012    source источник


Ответы (1)


Это зависит от того, на какую страницу вы хотите перенаправить.

  • Перенаправление на первую страницу другого портлета.

    Предположим, у вас есть портлет1, и вы хотите перенаправить портлет1 на портлет2. Если URL-адрес портлета2 — http:/yourDomain/web/portal/portlet2, приведенный ниже код будет перенаправлять на первую страницу портлета2 из портлета1.

    FacesContext context = FacesContext.getCurrentInstance(); javax.faces.context.ExternalContext externalContext = context.getExternalContext(); externalContext.redirect("/web/portal/portlet2");

Вышеприведенный код вызовет portlet2 и, в зависимости от конфигурации вашей приветственной страницы (в phaselistener или portlet.xml, будет отображаться ваша первая страница.

  • Перенаправление на другую страницу (вместо страницы приветствия) Portlet2 с Portlet1.

Допустим, вы хотите перенаправить на 3-ю страницу вашего Portlet2 с Portlet1. В этом случае, используя приведенный выше код, вы можете нажать Portlet2. Это вызовет PhaseListenter. Здесь вы можете проверить, на какую страницу вы хотите перенаправить, и, соответственно, использовать приведенный ниже код.

if(someConditionIsMet)
{   
 FacesContext context = FacesContext.getCurrentInstance();
UIViewRoot newPage = context.getApplication().getViewHandler().createView(context,"/your3rdPage.jsf");
 context.setViewRoot(newPage);
context.renderResponse();
}  
  • Перенаправление на какую-либо страницу в том же портлете

Я думаю, что вы не ищете ответ для этого случая. Тем не менее, я предполагаю, что не совсем понимаю ваш вопрос.

Допустим, вы вызываете ссылку через h:commandLink или h:commandButton. И вы вызываете метод (который возвращает String). Затем можно использовать приведенный ниже код.

public String someMethod()
{
 //Do your checks here
return "success";
  }

Это должно быть настроено в вашем файле faces-config.xml.

<navigation-rule>
  <navigation-case>
   <from-outcome>success</from-outcome>
   <to-view-id>/yourRequiredPage.jsf</to-view-id>
  </navigation-case>
</navigation-rule>
person Vikas V    schedule 24.12.2012