2012-02-12 14 views
1

playframework中的例子似乎沒有我的例子。預訂是最接近的,但是它是一個CRUD模塊的例子,並使用這個parent()調用,我不確定那會做什麼。沒有CRUD模塊的例子嗎?playframework,需要一個很好的創建,更新,刪除例子使用相同的html頁面

此外,所有的驗證示例示例在http POSTs的方法上調用「render」...是首選方法,而不是重定向到頁面中有錯誤的GET?

我找的,將回答所有這些問題的具體例子是

  • 創建新的對象與editentity.html
  • 重新呈現有錯誤
  • 並與editentity.html編輯老物件(顯然,與上面相同的html頁面)。

有沒有一個很好的例子呢?

這裏更多音符...... 我們有這個從調用頁面(或不同的主叫頁) 如果在添加項目

<a href="@{Project.editProject(null)">Add Project</a> 

用於編輯的項目

<a href="@{Project.editProject(project.name)">Edit</a> 

但現在如果我這樣做,我現在與我一樣努力

public static void postProject(ProjectDbo project) { 

    if(validation.hasErrors()) { 
     Validation.keep(); 
     params.flash(); 
     Project.editProject(???????/???); //I need to pass in the project to refill in the form AND the project.name for the routes file??? 
    } 

    SomePage.pageXXXXX(); 
} 

注意:????是我需要在projectDbo中傳遞的位置,但該方法只接受projectName。如何讓東西再次回到頁面中?

我認爲必須有一種方法來調用editProject並設置projectDbo需要被頁面訪問,或者沒有辦法做到這一點?如何做這種模式?

TRY#5:我嘗試使用params.flash並調用Project.editProject(project.name),但不幸的是,我的表單中沒有填充任何內容,用戶失去了他填寫的所有工作。只有我的工作是使用渲染(行動,{參數列表不匹配的動作參數})

(預訂的例子很多ajax很難看到那裏的例子)。

這是一個這樣一個常見的用例,我原以爲會有一個例子。

感謝, 院長

回答

3

我已經爲布宜諾斯艾利斯的Java用戶組的演示文稿準確地構建了該示例。

這只是一個基本的粗暴應用程序,具有驗證,一對多關係,固件,測試,標籤,推送引導以及部署到幾個PaaS雲計算。

這是GitHub庫:https://github.com/opensas/play-demo

詳細教程一步一步:https://github.com/opensas/play-demo/wiki

該應用程序是向上和上

OpenshiftGoogle application engineherokuCloudbees

運行是基於zencontact example,這也是你正在尋找的。

以及使用相同的形式,這是從應用程序的代碼:

public static void form(Long id) { 
    final Event event; 
    if (id==null) { 
     event = new Event(); 
    } else { 
     event = Event.findById(id); 
    } 
    render(event); 
} 

public static void save(@Valid Event event) { 
    if (validation.hasErrors()) { 
     render("@form", event); 
    } 
    event.save(); 
    flash.success("event successfully saved!"); 
    list(); 
} 

我希望這是有用的...

Saludos

SAS

+0

不錯,但我實際上正在嘗試使用該方法,因此重定向回到同一頁面將會發生,因爲渲染不會執行重定向,並且不會導致int醜陋「如果您返回,您將重新提交此數據」在瀏覽器中彈出?儘管這次我沒有看到這種情況......這是怎麼回事?爲什麼似乎沒有像重定向一樣工作通常是這樣做的? – 2012-02-14 12:12:27

0

是有一個原因

http://www.playframework.org/documentation/1.2.4/validation

不告訴你,你需要對此知道的一切?特別是「validation.keep()」方法。

+0

Validation.keep不告訴我答案?在Project.editProject(???????/???);這正是我正在尋找的。另外,Validation.keep不適用於使用渲染的情況,而僅適用於重做定向的情況。在我的例子中,因爲我正在做一個重定向(我將重新添加),所以我確實將這些代碼遺漏了。 – 2012-02-14 12:14:19

1

關於 「重定向後門柱」 的做法,我寫了一篇關於該主題的文章(西班牙語,對不起,你可以用谷歌嘗試翻譯)

https://github.com/opensas/RedirectAfterPost/blob/master/README.md

這裏是一個示例應用程序的git回購:https://github.com/opensas/RedirectAfterPost

基本上有一個重兩種方法:

再次呈現相同的頁面,而不會重定向(像它的上zentalk例如完成)

優點:

  • 我們騰出自己重定向
  • 我們沒有餅乾大小限制問題
  • 代碼更清潔,更直觀
  • 實例化對象更容易,sh OW它在它的初始狀態,當我們正在創建一個項目

缺點:

  • 如果用戶按下F5錯誤後,瀏覽器會要求確認重新提交

將所有數據和錯誤保存在閃存中,並強制重定向

優點:

  • 的主要優勢,是防止用戶從發出另一篇文章如果接收到錯誤後,用戶按下F5(它只是重複過去的GET到它被重定向)

測試樣品只是問題:

​​
+0

這個例子是缺少編輯雖然?????我很好奇編輯會喜歡什麼......這是一個棘手的部分,我覺得它很醜陋。 – 2012-02-15 01:43:23

+0

在另一個教程(https://github.com/opensas/play-demo)我已經使用渲染的方法添加和編輯(不重定向) – opensas 2012-02-15 05:38:21

0

最後我做我自己的例子,我可以從阿賈克斯偷這裏包括

https://github.com/deanhiller/timecardz/blob/master/app/controllers/OurPattern.java

視圖 https://github.com/deanhiller/timecardz/tree/master/app/views/OurPattern

爲POST的重要途徑都是通用的,因此它們可用於所有控制器不只是這一個

# Routes for all ajaxAddEdit and delete stuff 
GET  /{controller}/ajaxAddEdit/{id}   {controller}.ajaxAddEdit 
GET  /{controller}/ajaxDelete/{id}   {controller}.ajaxDelete 

# Catch all 
POST  /{controller}/{action}     {controller}.post{action} 

這個頁面的GET路線是唯一的具體路線,然後。

這對於一個位的時間,我在

http://myextremestore.com/ourpattern

的唯一的事情是從這個例子樣的缺相運行的現場版本是POST擁有實體的驗證調用(通知我控制器,後期的方法稱爲postXXX)

相關問題