私はプレイを持っています!冗長コードを含む2つのアクションを持つフレームワーク。だから、私はこのコードをprivate static
メソッドに組み込んだのですが、もう動作しません。Playで静的メソッドを呼び出す!フレームワークコントローラが動作しません
public static void show(long itemId, String listId) {
render(getItem(itemId, listId));
}
private static Item getItem(long itemId, String listId) {
// otherwise duplicate code ...
return item;
}
私はshow
アクションすべてにgetItem
に含まれるコードをインライン化した場合罰金です:
// this works
public static void show(long itemId, String listId) {
Item item = // duplicate code ...
render(item);
}
は、なぜ私がプレイ内の他の静的メソッドを呼び出すことはできません!コントローラ? 「Codemwnci」に
ソリューション
おかげで、私は以下のソリューション実装しました:それはローカル変数より意図がより明確になりますので、私はrenderArgs
を好む
public static void show(long itemId, String listId) {
renderArgs.put("item", getItem(itemId, listId));
render();
}
を。
ヘルパーメソッドをパブリックにすると、リダイレクトが発生することに注意してください。 http://stackoverflow.com/questions/3899670/how-can-i-influence-the-redirect-behavior-in-a-play-controllerを参照してください。これはあなたの現在の問題ではありませんが、いくつかの魔法が起こる次のものになる可能性があります。 – niels
ありがとう、私はそれを認識しています。 – deamon