我需要在加载页面时将输入焦点指向特定的inputtext组件(以允许使用条形码扫描仪输入值)。
在纯HTML中,我会在body标签中添加一个JavaScript“onload”处理程序,但在JSF中必须有更好的方法。
实现这一目标的“最干净”方法是什么:
答案 0 :(得分:7)
有趣的问题。
JSF中没有开箱即用的功能。您已经知道如何在纯HTML / Javascript中执行此操作,除了疯狂的ID之外,没有什么不同的JSF添加到此。
因此,对于“静态”访问,您只需确保指定完整的JSF ID,例如。 “myForm会:mydiv:myinput”。这不是很干净,但好像你的页面发生了变化,那么这个ID也可能会发生变化。
理想情况下,你有一个JSF组件,你在<h:inputText>
内嵌套,表明需要关注。例如:
<h:inputText value="#{whatever}">
<my:focusComponent />
</h:inputText>
从技术上讲,这不是一个难的解决方案。该组件只会找到它的ID,然后添加一些调用focus()的javascript。
Seam与它的<s:defaultAction/>
组件类似,它使链接或按钮响应回车键。您可能想查看该源代码。