jsfを使用してliferayのポートレット内の別のページにリダイレクトする方法は何ですか?私はjavascriptを介してwindow.location.hrefを試してきましたが、ポータルではなくページをリダイレクトしようとします。
1 に答える
リダイレクト先のページによって異なります。
別のポートレットの最初のページへのリダイレクト。
portal1があり、portlet1からportlet2にリダイレクトするとします。portal2のURLがhttp:/ yourDomain / web / portal / portal2の場合、以下のコードは、portlet1からportlet2の最初のページにリダイレクトされます。
FacesContext context = FacesContext.getCurrentInstance();
javax.faces.context.ExternalContext externalContext = context.getExternalContext();
externalContext.redirect("/web/portal/portlet2");
上記のコードはportlet2にヒットし、ウェルカムページの構成に応じて(最初のページ内phaselistener
またはportlet.xml
最初のページに表示されます)。
- Portlet1からPortlet2の他のページ(ウェルカムページではなく)にリダイレクトします。
Portlet1からPortlet2の3ページ目にリダイレクトするとします。この場合、上記のコードを使用して、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>