gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 07:09:41 25 4
gpt4 key购买 nike

假设我在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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com