JSF导航到命名锚点

时间:2013-03-10 10:45:04

标签: jsf navigation

我有一个JSF2表单,它不在页面顶部附近,表单在标题中有一个命名锚点:

<h2><a name="contact_form">Contact Us</a></h2>

表单由用户端验证组成,例如:

<f:validateLength for="message" minimum="10"/>
<f:validateRegex for="email" pattern="#{regex['email']}" />

验证失败时,用户将被重定向到页面顶部,但错误消息将显示在表单中。当表单通过验证时,请求在ManagedBean中处理,并在表单中显示成功消息,我将返回字符串:

public String sendMessage () {
    // process request ...

    return "#contact_form";
}

此代码会产生警告:

WARNING: JSF1090: Navigation case not resolved for component j_idt83.
  1. 我希望验证失败并重定向到命名锚点。
  2. 我希望成功处理表单以重定向到指定的锚点。
  3. 脚注:此表单由ui:include语句插入到网站的每个页面上,我不一定知道表单所在的网址。

1 个答案:

答案 0 :(得分:0)

我认为你不能将片段作为导航结果返回,至少在没有编写自定义NavigationHandler类的情况下。 (见SO answer,特别是对已接受答案的评论)

在我们的应用程序中,我们在主页面模板中使用了一些jquery,在document.ready()函数中选择任何具有以“scroll_to_anchor”结尾的id的元素,如果找到,则设置窗口位置到具有该id的第一个元素。我现在无法访问我的代码库,但我记得它非常简单,如果你对我的解决方案感兴趣,我可以在明天办公时发布代码。