单击 JSF commandLink 时,新页面的滚动位置将为 0 - 这很好。
我注意到我的一个 jsf 页面有一个奇怪的行为 - 但它的 acuallty 很难解释:单击链接以导航“某处”通常会冻结页面,当收到新的响应时,你会结束另一个页面和滚动位置被重置。这可以。
在那种特殊情况下,一旦单击命令链接,“当前”视图就会立即滚动到顶部,然后转发到所需的导航结果。
就像点击一个简单的链接,它的锚点设置在顶部。<a href='#'>
这可能是什么原因?感觉很奇怪,如果页面在您单击链接的第二秒向上滚动。
所有页面在数据表中对命令链接的使用基本相同。没有其他页面遇到该问题。控制器是不同的 - 但由于向上滚动是在几毫秒内完成的,我不认为这是服务器端问题。
我注意到 jsf 将 附加#
到所有生成的链接中。
所以,当我点击链接时,我可以看到 url.../page.xhtml#
瞬间变为 (瞬间,页面向上滚动),然后像 re-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;
,最后缺少...然后使链接表现得像一个锚...
<h:commandLink>
编辑2:使用-使页面向上滚动的链接生成按预期工作的链接,这些链接是<p:commandLink>
s(Primefaces)。实际上,更换它可以解决问题,但仍然想知道 primefaces 链接有什么不同。
编辑3:示例
按预期工作:
<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>