1

レコードを表示するループがあり、すべての行に送信ボタンを追加したいと考えています。送信する必要があるのは、ユーザーがボタンのいずれかを選択したときに保持したいフォームが下部にあるためです。

deferなどの使用に関するコメントを見てきましたが、何もうまくいかないようです。私が試している現在の送信コードは次のとおりです。

<input t:id="deleteItem" t:type="submit" t:context="item.number.content"   value="deleteItem" class="deleteItem" />

コンテキストを拡張するには: リストした現在のコンテキストは、アイテム オブジェクト内の数値オブジェクト内の単なる文字列です。実際、上記のコードでは問題なく表示されています。

これを別の方法でテストするために、item.number.content を getContext() メソッドに置き換え、ハードコーディングされた 1 を返すようにしました。次に、このメソッドをデバッグし、ページが送信されたときではなく、ページが送信されたときに呼び出されることを確認します。期待どおりにレンダリングされます。

ボタンが押されるまで、コンテキストは読み込まれません。私は何か誤解していますか??

編集:

したがって、私の問題はコンテキスト値を取得することです。たとえば、私のコードを見てください:

<t:loop source="itemsList" value="item" formState="none">
<!-- Display info here -->
<input t:id="deleteItem" t:type="submit" t:context="myContext" value="deleteItem"    class="deleteItem" />  
</t:loop>

getMyContext の定義は次のとおりです。

public String getMyContext() {
    String context = item.getNumber().getContent();
    return context;
}

問題は、submit が押された時点で変数「item」が null になるまでメソッドが呼び出されないことです。送信ボタンがレンダリングされるたびに getMyContext が呼び出されることを期待していました。送信が選択されると、適切なコンテキストでイベントがトリガーされます。それは理にかなっていますか?

4

2 に答える 2

3

私は最終的に私の問題が何であるかを理解しました:

formState="none" 

オブジェクトと文字列の間の変換に問題があったため、もともとこれを行いました。これを選択すると、送信ボタンが正しく機能しません。最終的に formState="iteration" に変更しましたが、今では期待どおりに機能しています (また、期待どおりに遅延が必要でした)。

于 2012-04-09T19:03:55.957 に答える
1

この t:submit を追加するページ/コンポーネントに次を追加してみてください。

@OnEvent(component = "deleteItem")
private void handleSubmit(Integer contextValue) {
     //Do whatever you need to do with the passed context value here.
     //Most commonly you would store the context in a java page/component field to 
     //be used by the form eventhandler to do some sort of CRUD
}

コンテキスト値は、ページのレンダリング中に書き出されません。フォームの送信中にイベント ハンドラーにパラメーターとして渡されます。したがって、あなたが見ているのは正しい動作です。

于 2012-04-06T06:40:17.703 に答える