当单击JSF commandLink时,新页面的滚动位置将为0--这很好。JSF跳转到立即锚定
我注意到我的一个jsf页面出现了一个奇怪的行为 - 但它的实用性很难解释: 点击链接以浏览“某处”通常会冻结页面,当收到新的响应时,会在另一个页面结束,滚动位置会被重置。这可以。
在这种特殊情况下,“当前”视图立即滚动到顶部,一旦点击了一个命令链接,然后THEN转发到所需的导航结果。
它就像点击一个简单的链接,它的锚点设置在顶部。 <a href='#'>
这可能是什么原因?这感觉很奇怪,如果页面向上滚动,你点击一个链接。
所有页面在数据表中具有基本相同的命令链接用法。没有其他页面遇到问题。控制器是不同的 - 但由于滚动在毫秒内完成,我不认为这是一个服务器端问题。
我注意到,jsf将#
附加到所有生成的链接上。
所以,当我点击链接,我可以看到网址更改为.../page.xhtml#
一秒钟(在一瞬间,页面滚动了),然后让重新jsft像.../page.xhtml?cid=4
编辑: 我所有的网页,链接如下:
<a href="#" onclick="mojarra.jsfcljs(document.getElementById('openTaskTable:0:j_idt64'),{'openTaskTable:0:j_idt64:j_idt65':'openTaskTable:0:j_idt64:j_idt65'},'');return false">SVA</a>
然而,上述页面return false;
末丢失......然后让链接行为像一个锚上...
edit2: 生成工作预期链接的方式是使用<h:commandLink>
- 使页面向上滚动的链接是<p:commandLink>
s(Primefaces)。事实上,取代它可以解决这个问题,但仍然想知道primefaces链接有什么不同。
EDIT3:例
按预期工作:
<h:form style="display:inline;">
<h:commandLink
action="#{processManagementController.unpinProcess(process)}">
<h:graphicImage
style="display:inline-block; height:16px; width:16px;"
value="/resources/img/pinned.png"
title="Click to unpin this process" />
</h:commandLink>
</h:form>
会造成直接滚动:
<h:form style="display:inline;">
<p:commandLink ajax="false"
action="#{processManagementController.unpinProcess(process)}">
<h:graphicImage
style="display:inline-block; height:16px; width:16px;"
value="/resources/img/pinned.png"
title="Click to unpin this process" />
</p:commandLink>
</h:form>
如果你添加你的''用法的样本,对我们来说会更好。 –
@LuiggiMendoza示例添加。 – dognose
''没有'ajax'属性。你确定这是你的代码的真实样本吗? –