2012-04-04 6 views
0

レコードを表示するループがあり、すべての行に送信ボタンを追加したいとします。彼らが提出する必要がある理由は、ユーザーがボタンの1つを選択したときに残したいと思うフォームが下部にあるためです。Tapestryでコンテキストパラメータが機能しない5.3.2提出用

私は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; 
} 

問題はメソッド、変数「項目」、その時点で押された提出後まで呼び出されない、あります無効である。私は、送信ボタンがレンダリングされるたびにgetMyContextが呼び出されることを期待していました。その後、サブミットが選択されると、イベントは適切なコンテキストでトリガーされます。それは理にかなっていますか?あなたはこのトンを追加ページ/コンポーネントに以下を追加し

+1

決して人が住んでいないとはどういう意味ですか?どのようにイベントハンドラのコンテキストを取得していますか?そのコードを質問に追加できますか? – joostschouten

+0

ありがとう、私は以下を追加しました:私がリストした現在のコンテキストは、アイテムオブジェクト内の数値オブジェクト内の単なる文字列です。実際、上のコードでは完全に上に表示されています。 これを別の方法でテストするには、item.number.contentをgetContext()メソッドに置き換え、ハードコードされた1を返します。このメソッドをデバッグし、ページがサブミットされたときに呼び出されることを確認します。ページは私が予想したようにレンダリングされます。 – DSmyte

答えて

3

私はようやく私の問題は何であったかを考え出し:

formState="none" 

それがトラブル私のオブジェクトと文字列の間の変換を持っていたので、私はもともとこれをしませんでした。これを選択すると、送信ボタンが正しく機能しません。私はそれをformState = "iteration"に変更することになってしまいました。そして今、それは私が期待したとおりに正確に働いています。

1

試してみてくださいに提出:ページのレンダリング中にコンテキスト値が書き出され得ることはありません

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

、それはあなたにパラメータとして渡されますフォームを送信している間、イベントハンドラ。だからあなたが見ているのは正しい行動です。

+0

回答をいただきありがとうございます。しかし、問題を処理しているイベントの処理ではありません。ボタンを送信するとコンテキストが取得されます。私は何を意味するのかを説明するために質問にもっと追加します、助けてくれてありがとう! – DSmyte

+0

私は、コンテクストをフォームに残しておき、あなたが提出したときに渡すべきであると確信しています。私はソースを見ていて、あなたの提出がループしているので、あなたはt:defer = "false"が必要です。 http://tapestry.apache.org/5.3.1/apidocs/org/apache/tapestry5/corelib/components/Submit.html – joostschouten

+0

これは私が思ったものですが、それは起こっていません。私のコンテキストメソッドはページがレンダリングされ、送信ボタンが押されるまで呼び出されません。私は本当に非常に混乱している、それは非常にストレートフォワードと思われ、私はタペストリーには新しくない。 – DSmyte

関連する問題