将焦点设置为JSF输入文本

时间:2009-10-09 07:36:14

标签: jsf

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

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

实现这一目标的“最干净”方法是什么:

  1. “静态”情况,其中同一控件在每次页面加载时都会获得焦点。
  2. “动态”情况,这可能是每个页面加载的不同控件。

1 个答案:

答案 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/>组件类似,它使链接或按钮响应回车键。您可能想查看该源代码。