1

我有一个 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. 我希望成功处理表单以重定向到命名的锚点。

脚注:这个表格是在网站的每个页面上插入一个ui:include声明的,我不一定知道表格所在的网址。

4

1 回答 1

0

我不认为您可以将片段作为导航结果返回,至少在不编写自定义 NavigationHandler 类的情况下不能。(请参阅此SO 答案,尤其是对已接受答案的评论)

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

于 2013-03-10T14:14:46.170 回答