0

我目前正在创建一个 primfaces portlet。当我在我的 bean 类中调用 Submit 方法时,从我的 view.xhtml 中。我想根据输入重定向视图。

下面是我提交方法的代码片段:

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 导航?在这种情况下,无需担心 portlet 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 回答