0

現在、primfaces ポートレットを作成しています。Bean クラスで Submit メソッドを呼び出しているときの view.xhtml から。入力に基づいてビューをリダイレクトしたい。

以下は、Submit メソッドのコード スニペットです。

Submit(){
try {
FacesContext.getCurrentInstance().getExternalContext().redirect("/views/Success.xhtml");
} catch (IOException e) 
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}

としてローカル ホスト URL に追加するだけhttp://localhost:8081/views/Success.xhtmlです。おそらく重要な何かが欠けていると思います。はいの場合、レンダリングフェーズメソッドを実装する必要があります。そのページのレンダリングURLを作成するにはどうすればよいですか。

4

2 に答える 2

1

これに通常の JSF ナビゲーションを使用しないのはなぜですか? その場合、ポートレットの URL を気にする必要はありません。JSF ブリッジによって処理されるからです。

public String submit() {
    // do stuff;
    return "/views/Success";
}

.xhtml拡張子は省略できます。

于 2013-02-18T13:51:40.040 に答える
0

次のコードを使用して URL を作成できます。

    FacesContext facesContext = FacesContext.getCurrentInstance();
    ExternalContext externalContext = facesContext.getExternalContext();
    PortletRequest portletRequest = (PortletRequest) externalContext
            .getRequest();

    ThemeDisplay themeDisplay = (ThemeDisplay) req.getAttribute(WebKeys.THEME_DISPLAY);
    PortletURL url = PortletURLFactoryUtil.create(req, 
            PortalUtil.getPortletId(req),
            themeDisplay.getLayout().getPlid(), 
            PortletRequest.ACTION_PHASE);
    url.setParameter("_facesViewIdRender", "/views/Success.xhtml");
    url.setWindowState(WindowState.NORMAL);
    url.setPortletMode(PortletMode.VIEW);
        FacesContext.getCurrentInstance().getExternalContext().redirect(url.toString());
于 2013-02-15T15:29:56.737 に答える