我有一個玩!包含冗餘代碼的兩個操作的框架。所以我將這個代碼分解成了一個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;
}
如果我內聯包含在getItem
到show
一切行動的代碼是罰款:
// this works
public static void show(long itemId, String listId) {
Item item = // duplicate code ...
render(item);
}
爲什麼我不能叫戲中其他的靜態方法!控制器?
解決方案
感謝「Codemwnci」我已經實現了以下解決方案:
public static void show(long itemId, String listId) {
renderArgs.put("item", getItem(itemId, listId));
render();
}
我喜歡renderArgs
因爲它使意圖,而不是一個局部變量更加清晰。
請記住,如果您使輔助方法公開重定向發生。請參閱http://stackoverflow.com/questions/3899670/how-can-i-influence-the-redirect-behavior-in-a-play-controller。這不是你現在的問題,但可能是下一個發生一些魔術的地方。 – niels
謝謝,我知道它。 – deamon