redirect - 如何重定向到JSF中的 anchor ?

标签 redirect jsf-2 accessibility anchor

假设我在JSF托管Bean中执行以下操作:

public String doSomething() {
    FacesContext.getCurrentInstance().getExternalContext().getFlash().put("msg", "Something was done successfully");
    return "view?faces-redirect=true";
}

我的view具有ID为msg的 anchor 元素。我希望网址具有此 anchor (用于可访问性问题),例如:
view.jsf#msg

或我的FacesServlet过滤器模式是什么。
return "view#msg?faces-redirect=true";显然不起作用,因为JSF(至少是mojarra)将尝试将view#msg评估为 View 。

所以我的问题是如何使JSF最终重定向到带有#msg的URL。

最佳答案

because JSF (mojarra at least) will try to evaluate view#msg as a view



哦,真讨厌。对于JSF/Mojarra男孩来说,绝对值得提出增强请求。

最好的选择是在 ExternalContext#redirect() 的帮助下手动发送重定向。
public void doSomething() throws IOException {
    ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
    ec.getFlash().put("msg", "Something was done successfully");
    ec.redirect("view.xhtml#msg");
}

(假设FacesServlet映射到*.xhtml)

或者,您可以有条件地渲染一块JS来代替。

<ui:fragment rendered="#{not empty flash.msg}">
    <script>window.location.hash = 'msg';</script>
</ui:fragment>

关于redirect - 如何重定向到JSF中的 anchor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6601642/

相关文章:

html - 是否可以将 HTML &lt;input type ="date"> 的值绑定(bind)到 JSF 管理的 bean 属性?

jsf - #{bean.function} 和#{bean.function()} 有什么区别?

android - 使用对讲辅助功能模式在滑动时阅读 viewpager 中的 fragment 内容

grails - Grails重定向,同时保留表单值

java - 为什么 "return ERROR"仅适用于异常?

JSF 页面中的 java.lang.NumberFormatException

html - 空表格单元格的可访问性

usability - 如何为图像编写良好的替代文字,以帮助屏幕阅读器和盲人理解图片的含义?

redirect - HTTP2 请求不遵循 JMeter 5.0 中的重定向

ruby-on-rails - 直接使用 https ://访问站点博客的重定向 url 时出现 SSL 错误