0

私のJSFページは次のとおりです

   <h:head>
        <title>Ajax Test</title>
    <h:outputScript name="giveEffect.js" library="jquery"/>
    <h:outputScript name="jquery.js" library="jquery"/>
</h:head>
<h:body>
    <div id="div1">
        <h:button id="b1" onclick=" button1Click(this)" value="#{kp.firstname}"/>
    <h:button id="b2" onclick="button1Click(this)" value="#{kp.home}"/>
    </div>
</h:body>
</html>

button1Clickは、ajax呼び出しを実行してページを更新するjquery関数です。しかし、ajaxの更新を見ることができません。postback / jsf life cylce呼び出しのため、変更が失われています。

Firebugを使用してDomを検査することについて。次のコードが見つかりました。

<div id="div1">
<input id="b1" type="button" value="Kar" onclick="button1Click(this); window.location.href='/AJAXTest/faces/index.xhtml'; return false;">
<input id="b2" type="button" value="Alike" onclick="button1Click(this); window.location.href='/AJAXTest/faces/index.xhtml'; return false;">
 </div>

firebugを使用してwindow.location.href='/AJAXTest/faces/index.xhtml'を削除すると、期待どおりの出力が得られます。

ポストバックコールを削除するためのタグまたはメカニズムはありますか?

4

1 に答える 1

0

ボタンコンポーネントの結果属性は、onclickによってアクティブ化されるターゲットURLを決定するために使用されます。ターゲットURL文字列全体が、ボタンのonclick属性に「window.location.href=''」として書き出されます。カスタムのonclickメソッドがある場合は、スクリプトの最後にwindow.location.hrefが追加されます。結果について言及しなかったため、現在のビューに対してGETリクエストが発生します。

<h:commandButton>代わりに、次のようにtype="button"を使用して言及することができ ます。

<h:commandButton id="b1" onclick=" button1Click(this)" value="#{kp.firstname} "type="button">

ドキュメンテーション

于 2012-07-07T20:55:44.910 に答える