2012-07-18 48 views
0

我有与对这个问题:菜单项 - 使用PF 3.3.1,3.3.3 PrettyFaces和JSF/Mojarra2.1。号码:菜单项行动和行动处理重定向 - WINDOWID被钉在结束重定向URL

所以我有一组P的:需要通过从当前页面的“ID”参数的菜单项。但是,我不希望构建以下形式的URL:/ page/targetPage?id = id & faces-redirect = true。我想要做的是,在页面动作处理程序上,重定向到有问题的URL。但是,问题在于所产生的重定向会将windowId附加到最后,并且我无法访问targetURL!

<p:menuitem action="#{myActions.performAction}" ajax="false" value="navigateToThisAction"/> 

在我的支持bean:

在我的facelet

public String performAction() { 
    return navigate("pretty:myAction"); 
} 

protected String navigate(String mappingId) { 
    HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest(); 
    PrettyContext context = PrettyContext.getCurrentInstance(request); 
    PrettyURLBuilder builder = new PrettyURLBuilder(); 

    UrlMapping mapping = context.getConfig().getMappingById(mappingId); 
    String targetURL = builder.build(mapping, true, getId()); 

    try { 
     FacesContext.getCurrentInstance().getExternalContext().redirect(targetURL); 
    } catch (IOException ioe) { 
     System.out.println("Error redirecting..." + ioe.getMessage()); 
    } 
    return null; 

} 
+0

PS - 结果在浏览器中是一样的东西:HTTP://本地主机:年底(我觉得)我得到一个404 8080 /页/ myAction/10651 = WINDOWID公元前因为窗口的id没有发现?错误.... – Nena 2012-07-18 00:08:54

+0

如果删除这个'WINDOWID = '在浏览器中手动你仍然得到404错误? – 2012-07-18 00:14:08

+0

都能跟得上 - 它工作得很好...... – Nena 2012-07-18 00:17:05

回答

0

如果WINDOWID = xxxxx是由您的来电FacesContext.getCurrentInstance().getExternalContext().redirect(targetURL);添加,那么你可能要检查你的框架,看看有什么补充。 PrettyFaces不会添加一个windowId参数,所以我猜测它是别的,你正在使用的一些其他库,并且可能有办法在给定页面上手动禁用它。

0

我发现,问题是,我是缺少在网址前request.getContextPath()重定向之前 - 感谢所有的答复!