問題可能很明顯,但我仍然無法找到適當的解決方案。PlayFramework嚴格路線和ajax
讓我們假設有一個只有一個方法控制器:
class MyController extends Controller {
public static Result sum(int op1, int op2) {
return ok(op1 + op2);
}
}
路由文件是很簡單的太:
@controllers.routes.MyController.sum(1, 2)
:從模板
GET /sum controllers.MyController.sum(op1: Integer, op2: Integer)
好了,現在我可以做電
將被翻譯成
localhost:9000/sum?op1=1&op2=2
,或直接粘貼到瀏覽器中。這工作很好。
但是,當我決定使用ajax來做這件事時,一切都變糟糕了。 我不是js-guru,所以我寫小(我認爲不好)使用jQuery的對象,它將onClick處理程序添加到按鈕。那就是:
entityController.setSumURL = function(sumURL) {
this.sumURL = sumURL;
}
entityController.bindSumButton = function(buttonId, op1, op2) {
$.get(entityController.sumURL, {op1: op1, op2, op2}, function(){
alert("Done!");
});
}
其中entityController.sumURL應該是網址/數總和法。 通常當我渲染頁面視圖我寫的是這樣的:
@()
....
entityController.setSumURL("@controllers.routes.MyController.sum()")
....
但我不能這樣做,因爲和方法強制性的參數,也沒有辦法讓地址僅僅是因爲綁定的URL可以依靠傳遞給函數指標的影響在路線中定義。
所以問題是如何從沒有參數的url獲得路徑,或者如何重新組織整個過程以避免這種情況?
我的解決方案是從路徑中出現的函數中刪除參數,並直接從請求中查詢它們,但是我的項目正在增長,有時很難理解哪些參數傳遞給方法。