2012-04-11 15 views
4

ボタンをクリックして同時にバッキングのプロパティを設定するときにJavaScriptを実行しようとしています。 JSコードの実行は機能しますが、プロパティアクションリスナーは呼び出されません。ただし、onclick属性を削除すると、コマンドボタンをクリックするとバッキングにプロパティが設定されます。私はまた、actionListenerを使ってみました。しかし、同じ問題。私のJSFコードは次のとおりです:JSF:一緒にonclick + actionListenerを使用する

<rich:dataTable value="#{bean.items}" var="item"> 
    <rich:column> 
    <a4j:commandButton value="Upload" onclick="Richfaces.showModalPanel('p-id');return false;"> 
     <f:setPropertyActionListener target="#{bean.targetId}" value="#{item.id}" /> 
    </a4j:commandButton> 
</rich:column> 
// more columns 
</rich:dataTable> 

ここに何かがありますか?

+3

falseを返します。あなたのonclickでは、a4j:commandButtonの実行を続行できないようにし、戻り値falseを削除します。 – Daniel

答えて

3

コンポーネント<a4j:commandButton>は、現在の質問には関係のないajaxの魔法のためのJSコードの束と共にHTML <input type="submit">要素を生成します。

コンポーネントのonclick属性は、非常に同じHTML要素のonclick属性として生成されます。 onclick属性は通常、HTML DOM clickイベントが特定のHTML要素で発生したときに実行されるJavaScriptコードを参照します。このイベントは、エンドユーザーがHTML要素をクリックするとすぐに発生し、の前に、の前にHTML要素のデフォルトアクション(親フォームの送信)が呼び出されます。さらに、デフォルトのアクションは、JavaScriptコードの論理結果によって制御できます。 falseが返された場合、デフォルトのアクションは実行されません。これはあなたの場合に起こっていることです。

あなたはonclick属性 HTML <input type="submit">要素のデフォルトのアクションにJavaScriptコードの両方を起動したい場合は、trueを返すために持っているか、単に完全return false;部分を削除します。

関連する問題