【发布时间】:2018-03-05 14:00:51
【问题描述】:
如果我想将焦点设置到验证失败的字段。我可以使用<p:focus context='@form'/> 来实现这个简单的案例,很简单。但我的问题是,并非所有验证都可以在前端执行。例如,我希望用户输入用户名,当用户提交表单时,bean 会检查数据库中用户名是否已存在,如果存在,则将错误消息设置到字段并设置焦点。在这种情况下,<p:focus /> 标签不再起作用,因为它实际上已经通过了前端验证。
我找到了this 答案并尝试实现它,我会说它只能部分工作。为什么?因为如果您通过为其声明一个变量从 bean 手动设置焦点,它将覆盖 <p:focus context='@form'/> 标记。当这个焦点标签失去作用时,如果有任何前端验证失败,它就不会再把焦点带到那个特定的字段上。
我尝试的是使用widgetVar 来执行焦点。我为我的字段声明了一个 widgetVar 名称,比如说 widgetVar='username',在托管 bean 上,我使用以下代码来关注它:
RequestContext.getCurrentInstance().execute("PF('username').focus()");
不幸的是,它不起作用。不确定execute() 是否以这种方式不起作用或语句有问题。对不起,我的英语不好,任何帮助或建议将不胜感激。
【问题讨论】:
-
您的 Primefaces 版本是多少?
-
@JorgeCampos Primefaces 6.1
标签: jsf primefaces