1

jsfを使用してliferayのポートレット内の別のページにリダイレクトする方法は何ですか?私はjavascriptを介してwindow.location.hrefを試してきましたが、ポータルではなくページをリダイレクトしようとします。

4

1 に答える 1

4

リダイレクト先のページによって異なります。

  • 別のポートレットの最初のページへのリダイレクト。

    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>
于 2012-12-24T03:27:23.177 に答える