0

私はとを持っています<h:panelGrid>h:commandLinkリンクは基本的に画像です)。今、私はマウスオーバーイベントでそれが欲しいです、そしてリンクはレンダリングされるべきで(render='true')あり、マウスアウトイベントでそれは削除されrender='false'ます。
しかし、私が使用しているアプローチはBeantruefalseこのイベントの値を設定することであるため、これらのイベントでこれを行うにはどうすればよいかというロジックを作成できません。
これが私のコードです

<h:form>
        <h:panelGrid mouseover='** we cannot call a bean method here which changes the bean value **'>

        This is the Div On which I want to apply mouseover event
        </h:panelGrid>

        <h:commandLink id="btn" render={renderBean.renderLink}>
        <h:graphicImage url="image.jpg"/>
        </h:commandLink>


    </h:form>


renderLink属性のデフォルト値renderBeanはfalseです。ここで、マウスオーバーイベントでその値をどのように変更できるかを知りたいのですが。true出来ますか?またはJSFの他のソリューションはこの要件を満たしています

4

1 に答える 1

3

JSF では、ページは最初に Web サーバーの JSF エンジンによってサーバー側で処理されることを覚えておく必要があります。その時点で、すべての JSF タグが同等の HTML に変換されます。この属性は、要素の代わりに HTML (アンカー) リンクrenderを出力するかどうかをサーバー側エンジンに指示します。a<h:commandLink>

探している動作、つまりマウス イベントへの応答は、クライアント側の機能です。これは Web サーバーではなくブラウザーで行われるため、JSF は関与しません。解決策は、JSF ではなく JavaScript でマウス イベントを処理することです。display:none通常は、呼び出された IDに CSS 属性を設定 (または削除) しますbtn(残念ながら、JSF が要素 ID を少し壊すため、これは少し複雑です)。ここ StackOverflow には、JavaScript でクライアント側のイベントを処理する方法を扱った投稿がたくさんあります。たとえば、jQuery を使用することは、非常に一般的なアプローチです。

まずは、私たちの最高の JSF リソースの 1 つであり、長年 StackOverflow を使用している BalusC のブログ ( http://balusc.blogspot.com ) をご覧になることをお勧めします。

学ぶべきことはたくさんあります。最初にそこに行く (そして SO に関する彼の投稿を検索する) ことから始めるのが良いでしょう。

幸運を。

于 2013-02-27T07:15:32.630 に答える