如何通过 p:focus 上的 'for' 属性获得明确的焦点?
How can I obtain explicit focus via the 'for' attribute on p:focus?
根据文档,应该可以明确声明表单输入
element 组件通过 'for' 属性接收焦点。
在这种情况下,默认情况下第二个可见且启用的输入元素而不是第一个 -
那么有人可以帮助我解释为什么以下内容不起作用吗?
<h:form id="form4">
<p:focus id="pick" for="input2" />
<h:inputText id="input1" value="#{messageManagedBean.message1}"/>
<h:inputText id="input2" value="#{messageManagedBean.message2}"/>
<p:commandButton value="Execute JSF Lifecycle - Invoke Action One" action="#{messageManagedBean.doSomeAction41}" ></p:commandButton>
<p:commandButton value="Execute JSF Lifecycle - Invoke Action Two"
action="#{messageManagedBean.doSomeAction42}" ></p:commandButton>
<p:messages for="input1" id="messages1" autoUpdate="true"/>
<p:messages for="input2" id="messages2" autoUpdate="true"/>
</h:form>
非常感谢!
[PrimeFaces:3.5.25
Java服务器界面:1.2
Java 小服务程序:2.5
服务器:阿帕奇 Tomcat 8.0.15]
如果您检查 p:focus
渲染器的来源,您将看到(如果您设置 for
)组件已解析并且 JavaScript 的一点是 written:
writer.write("$(function(){");
writer.write("PrimeFaces.focus('" + clientId +"');");
writer.write("});");
由于它不适用于您的软件堆栈,您可以省略 p:focus
并自己简单地编写 JavaScript:
<h:form id="form4">
<script>
$(function(){ PrimeFaces.focus('form4:input2'); });
</script>
<h:inputText id="input1" value="#{messageManagedBean.message1}"/>
<h:inputText id="input2" value="#{messageManagedBean.message2}"/>
...
</h:form>
是的,这是一个 hack。如果可以,请升级您的软件堆栈。对我来说,您的 XHTML 正在运行。
根据文档,应该可以明确声明表单输入 element 组件通过 'for' 属性接收焦点。 在这种情况下,默认情况下第二个可见且启用的输入元素而不是第一个 - 那么有人可以帮助我解释为什么以下内容不起作用吗?
<h:form id="form4">
<p:focus id="pick" for="input2" />
<h:inputText id="input1" value="#{messageManagedBean.message1}"/>
<h:inputText id="input2" value="#{messageManagedBean.message2}"/>
<p:commandButton value="Execute JSF Lifecycle - Invoke Action One" action="#{messageManagedBean.doSomeAction41}" ></p:commandButton>
<p:commandButton value="Execute JSF Lifecycle - Invoke Action Two"
action="#{messageManagedBean.doSomeAction42}" ></p:commandButton>
<p:messages for="input1" id="messages1" autoUpdate="true"/>
<p:messages for="input2" id="messages2" autoUpdate="true"/>
</h:form>
非常感谢!
[PrimeFaces:3.5.25 Java服务器界面:1.2 Java 小服务程序:2.5 服务器:阿帕奇 Tomcat 8.0.15]
如果您检查 p:focus
渲染器的来源,您将看到(如果您设置 for
)组件已解析并且 JavaScript 的一点是 written:
writer.write("$(function(){");
writer.write("PrimeFaces.focus('" + clientId +"');");
writer.write("});");
由于它不适用于您的软件堆栈,您可以省略 p:focus
并自己简单地编写 JavaScript:
<h:form id="form4">
<script>
$(function(){ PrimeFaces.focus('form4:input2'); });
</script>
<h:inputText id="input1" value="#{messageManagedBean.message1}"/>
<h:inputText id="input2" value="#{messageManagedBean.message2}"/>
...
</h:form>
是的,这是一个 hack。如果可以,请升级您的软件堆栈。对我来说,您的 XHTML 正在运行。