JSF commandLinkをクリックすると、新しいページのスクロール位置は0になります。これは問題ありません。
jsfページの1つで奇妙な動作に気づきましたが、その正確さを説明するのは非常に困難です。「どこか」に移動するためにリンクをクリックすると、通常、ページがフリーズし、新しい応答を受信すると、別のページに移動します。ページとscrollpositionがリセットされます。これで結構です。
その特定のケースでは、コマンドリンクがクリックされると、「現在の」ビューがすぐに一番上にスクロールし、次に目的のナビゲーション結果に進みます。
プレーンリンクをクリックするようなもので、アンカーが上部に設定されています。<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;
では、最後にがありません...これにより、リンクがアンカーのように動作します...
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>