我目前正在创建一个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
。我想我错过了一些关键的东西。应该实现一些渲染阶段方法,如果是,我如何去做它,以便它为该页面创建一个渲染网址。
答案 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());