как перенаправить на другую страницу внутри портлета в liferay с помощью jsf? Я пробовал window.location.href через javascript, но он пытается перенаправить страницу, а не портал.
Как перенаправить в Liferay Portal с помощью JSF
Ответы (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>