我有一个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.
脚注:此表单由ui:include
语句插入到网站的每个页面上,我不一定知道表单所在的网址。
答案 0 :(得分:0)
我认为你不能将片段作为导航结果返回,至少在没有编写自定义NavigationHandler类的情况下。 (见SO answer,特别是对已接受答案的评论)
在我们的应用程序中,我们在主页面模板中使用了一些jquery,在document.ready()函数中选择任何具有以“scroll_to_anchor”结尾的id的元素,如果找到,则设置窗口位置到具有该id的第一个元素。我现在无法访问我的代码库,但我记得它非常简单,如果你对我的解决方案感兴趣,我可以在明天办公时发布代码。