Jsf Primefaces RequestContext scrollTo不起作用
Primefaces v3.5版 尝试使用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
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组件,因此不需要放置在组件中。这样,您可以继续使用初始尝试
另见:
<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");