Jsf Primefaces RequestContext scrollTo不起作用

Jsf Primefaces RequestContext scrollTo不起作用,jsf,primefaces,requestcontext,Jsf,Primefaces,Requestcontext,Primefaces v3.5版 尝试使用RequestContext.getContext().scrollTo(“”在ajax请求结束时以编程方式滚动到我的表单 XHTML代码片段: 豆子: public void方法calledbyajax(){ List updateTargets=new ArrayList(); add(“currentRecordForm”); add(“GenericMessageForm”); RequestContext.getCurrentInstanc

Primefaces v3.5版

尝试使用
RequestContext.getContext().scrollTo(“”
在ajax请求结束时以编程方式滚动到我的表单

XHTML代码片段:


豆子:

public void方法calledbyajax(){
List updateTargets=new ArrayList();
add(“currentRecordForm”);
add(“GenericMessageForm”);
RequestContext.getCurrentInstance().update(updateTargets);
RequestContext.getCurrentInstance().scrollTo(“GenericMessageForm”);
}
更新确实有效

滚动到不起作用(相同ID!)

没有抛出服务器错误

没有抛出javascript控制台错误


浏览器已试用:Firefox(最新)、Chrome(最新)、IE8。

您在文档中查看了吗?以下是一个引述自:

滚动
public abstract void scrollTo(字符串clientId)

ajax请求完成后滚动到组件

参数:
clientId
-组件的客户端标识符

看,它说的是客户机ID,而不是组件ID。同样有意义的是,滚动工作最终是由JavaScript通过
document.getElementById()
和friends完成的。这仅适用于客户端ID

对于没有记住全部内容的初学者来说,一种简单的方法是通过在webbrowser中右键单击查看源代码来查看JSF生成的HTML输出,从而确定正确的客户端ID

暂时

顺便说一句,如果表单只包含
,那么您也可以完全删除整个表单。
不是nor组件,因此不需要放置在组件中。这样,您可以继续使用初始尝试

另见:

D'oh,当然!再次感谢BalusC,也感谢您对不需要表格的解释:-)
<h:form id="genericMessagesForm">
                    <p:messages id="genericMessages" />
                </h:form>
<p:commandButton id="testButton" 
            value="Test" process="#{cc.attrs.itemName}Final, @this"
                actionListener="#{myBean.methodCalledByAjax()}" />
public void methodCalledByAjax() {
    List<String> updateTargets = new ArrayList<String>();
                updateTargets.add("currentRecordForm");
                updateTargets.add("genericMessagesForm");
                RequestContext.getCurrentInstance().update(updateTargets);
                RequestContext.getCurrentInstance().scrollTo("genericMessagesForm");
}
<h:form id="genericMessagesForm">
    <p:messages id="genericMessages" />
</h:form>
<form id="genericMessagesForm" ...>
    <div id="genericMessagesForm:genericMessages" ...>
        ...
    </div>
</form>
requestContext.scrollTo("genericMessagesForm:genericMessages");