Liferay Primefaces Portlet重定向问题

时间:2012-12-28 07:26:58

标签: jsf-2 primefaces portlet liferay-6

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

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

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

它只是将本地主机网址添加为http://localhost:8081/views/Success.xhtml。我想我错过了一些关键的东西。应该实现一些渲染阶段方法,如果是,我如何去做它,以便它为该页面创建一个渲染网址。

2 个答案:

答案 0 :(得分:1)

为什么不使用普通的JSF导航?在这种情况下,无需担心portlet URL,因为它将由JSF桥接器为您处理。

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

您可以省略.xhtml扩展名。

答案 1 :(得分:0)

您可以使用以下代码

创建网址
    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());