1

JSF1.2 アプリケーションを開発しています。ユーザーが h:selectOneMenu などの入力コンポーネントを変更すると、JSF の「値変更イベント」が呼び出されます。ページが呼び出されたときにフォームが送信され、ページがリロードされ、カーソルがページの上部にあります。カーソルを前の位置にとどめたい。以下は h:selectOneMenu のコードです。

<h:selectOneMenu value="#{bean.value}" onchange="this.form.submit()"
    valueChangeListener="#{bean.valueChangeMethod}">
    <f:selectItems value="#{bean.values}" />
</h:selectOneMenu>

どうすれば解決できますか?XHTML ファイルにスクリプトを記述していません。これについて私を案内してください。

4

3 に答える 3

1

JSF バージョンを指定しなかったため、JSF2ソリューションは次のとおりです。

AJAX 呼び出しにすると、ページのスクロールは変わりません。次に例を示します。

<h:selectOneMenu value="#{bean.value}">
    <f:selectItems value="#{bean.values}" />
    <f:ajax listener="#{...}" render="id1 id2 id3 ..." />    
</h:selectOneMenu>

id1 id2 id3 ...AJAX 呼び出し後に再レンダリングするコンポーネントの ID です。@allページ全体@formを更新したり、現在のフォームを更新したりできます。

詳細については、<f:ajax /> こちらをご覧ください。

于 2013-10-17T14:21:22.063 に答える
0

このちらつきの問題は ajax で解決できます。Ajax の場合、次の jar を lib フォルダーに追加します。

  • ajax4jsf-1.0.6.jar
  • commons-beanutils.jar
  • commons-digester-1.7.jar
  • org.apache.servicemix.bundles.oscache-2.4_1.jar

次のコードを web.xml ファイルに追加します

<filter>         
  <display-name>Ajax4jsf Filter</display-name>        
  <filter-name>ajax4jsf</filter-name>         
  <filter-class>org.ajax4jsf.Filter</filter-class>     
</filter>       

<filter-mapping>         
  <filter-name>ajax4jsf</filter-name>         
  <url-pattern>*.jsf</url-pattern>        
  <dispatcher>REQUEST</dispatcher>         
  <dispatcher>FORWARD</dispatcher>         
  <dispatcher>INCLUDE</dispatcher>     
</filter-mapping> 

次の行を .jsp ページに追加します。

<%@ taglib prefix="a4j" uri="https://ajax4jsf.dev.java.net/ajax"%> 
于 2013-10-18T12:42:36.703 に答える
0

ページの更新時にマウスの位置を取得することが目的の場合、これは不可能です。

とにかく今のところ。onmousemoveただし、カーソルが画面上のどこにあるかを示すイベントをキャプチャしてその場所を保存することはできますが、マウスを操作して単独で移動することはできません。

focus();ただし、フォーカスしたいテキストフィールドがある場合は、常に JSメソッド onpageloadを使用できます。

編集

OPの一般的な質問については。

これは不可能です。ブラウザに依存します。通常、カーソルは通常の最新のブラウザーの場所にとどまります。古いブラウザや IEでは、動作が少し異なります。

これが不可能な理由は、ページの更新時にマウスの位置が不明になるためです。したがって、可能であっても再配置できません。

お役に立てれば

‐ シド

于 2013-10-17T11:09:17.173 に答える