5

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

<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>

ここで何か足りないのですか?

4

1 に答える 1

3

このコンポーネントは、現在の質問に関係のないajaxマジック用の一連のJSコードとともに<a4j:commandButton>HTML要素を生成します。<input type="submit">

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

onclick属性のJavaScriptコードHTML要素のデフォルトのアクションの両方を呼び出す場合<input type="submit">は、を返すか、部分を完全trueに削除する必要があります。return false;

于 2012-04-12T01:08:09.480 に答える