JSF立即跳锚



单击JSF命令链接时,新页面的滚动位置将为0,这很好。

我注意到我的一个jsf页面有一个奇怪的行为,但它的敏锐性很难解释:点击链接以导航到"某个地方"通常会冻结页面,当收到新的响应时,你会出现在另一个页面上,滚动位置会重新设置。这很好。

在这种特殊情况下,一旦单击命令链接,"当前"视图将立即滚动到顶部,然后转到所需的导航结果。

这就像点击一个普通的链接,只在顶部设置了锚。<a href='#'>

这可能是什么原因?如果你点击链接的那一秒页面就向上滚动,感觉很奇怪。

所有页面在数据表中对命令链接的使用基本相同。没有其他页面遇到这种问题。控制器不同,但由于向上滚动是在几毫秒内完成的,我不认为这是服务器端的问题。

我注意到jsf将#附加到生成的所有链接中。

因此,当我点击链接时,我可以看到url在瞬间变为.../page.xhtml#(瞬间,页面向上滚动),然后得到类似.../page.xhtml?cid=4 的重新jsft

编辑:对于我所有的页面,链接看起来是这样的:

<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;不见了。。。这使得链接表现得像一个锚。。。

第2版:使用<h:commandLink>生成按预期工作的链接——使页面向上滚动的链接是<p:commandLink>(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>

由于href="#",它没有滚动到顶部,而是因为同步回发(这会导致页面的完全重新加载!)。你的"edit3"中的两个例子对我来说仍然滚动到顶部

<h:commandLink>中嵌套<f:ajax>,或在<p:commandLink>上设置ajax="true",使其成为异步回发,从而使它们按预期操作。

相关内容

  • 没有找到相关文章

最新更新