这很简单
<p:commandLink value="Tom" onclick="document.getElementById('tom').focus()"/><br/>
<input id="tom"/>
当您点击 Tom 时,文本框获得焦点。太好了,现在试试这个
<p:commandLink value="Tom" onclick="document.getElementById('tom').focus()"/><br/>
<h:inputText id="tom"/> <br/>
当我点击什么都没有发生时,我检查了 Firebug ,我明白了
document.getElementById("tom") is null
当我尝试使用 jQuery $('#tom').focus()
时,没有任何反应,没有错误,但也没有获得焦点。这是我从firebug看到的response
(不确定这是不是服务器的响应)
<?xml version="1.0" encoding="utf-8"?>
<partial-response>
<changes>
<update id="javax.faces.ViewState"><![CDATA[455334589763307998:-2971181471269134244]]></update>
</changes>
<extension primefacesCallbackParam="validationFailed">{"validationFailed":false}</extension>
</partial-response>
最佳答案
JSF 将在 ID 前添加 UINamingContainer
具有 UINamingContainer
组件本身 ID 的子项(h:form
、h:dataTable
等)。您可以通过将 prependId
属性设置为 false
来禁用此功能。
<h:form prependId="false">
您将无法再在同一 View 的其他地方动态包含同一段代码。禁用此功能时请记住这一点。
关于javascript - Primefaces、JavaScript 和 JSF 不能很好地协同工作,或者我做错了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4038456/