将焦点设置为JSF输入文本

Tim*_*imo 7 jsf

我需要在加载页面时将输入焦点指向特定的inputtext组件(以允许使用条形码扫描仪输入值).

在纯HTML中,我会在body标签中添加一个JavaScript"onload"处理程序,但在JSF中必须有更好的方法.

实现这一目标的"最干净"方式是什么:

  1. "静态"情况,其中相同的控件在每个页面加载时获得焦点.
  2. "动态"情况,这可能是每个页面加载的不同控件.

Dam*_*amo 7

有趣的问题.

JSF中没有开箱即用的功能.您已经知道如何在纯HTML/Javascript中执行此操作,除了疯狂的ID之外,没有什么不同的JSF添加到此.

因此,对于"静态"访问,您只需确保指定完整的JSF ID,例如."myForm会:mydiv:myinput".这不是很干净,但好像你的页面发生了变化,那么这个ID也可能会发生变化.

理想情况下,你有一个嵌入你的JSF组件,<h:inputText>表明需要关注焦点.例如:

<h:inputText value="#{whatever}">
  <my:focusComponent />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)

从技术上讲,这不是一个难的解决方案.组件只会找到它的ID,然后添加一些调用focus()的javascript.

Seam与它的<s:defaultAction/>组件类似,使链接或按钮响应回车键.您可能想查看其源代码.