2013-11-15 49 views
0

我是使用Play的新手!框架2.X並有一個簡單的問題。 如何發送到我的方法Job.create(filledJob)一個完整的Job對象?這意味着包含在Job對象中的Company對象也被填充。玩! Framework 2.X,表單處理

我有以下幾點:

public class Job { 
    public String title; 
    public Company company; 
} 

public class Company { 
    public String name; 
    public String email; 
} 

我在模板中有一個表格,包含招聘信息部分和公司部分

@(jobForm: Form[Job], companyForm: Form[Company]) 
@form(routes.Application.newJob()) {  
    @inputText(jobForm("title"))    
    @inputText(companyForm("name"))      
    <input type="submit" value="Create">  
} 

我控制器(Application.java)看起來像:

public class Application extends Controller { 

    static Form<Job> jobForm = form(Job.class); 
    static Form<Company> companyForm = form(Company.class); 

    public static Result index() { 
     return ok(
     views.html.index.render(jobForm, companyForm) 
    ); 
    } 

    public static Result newJob() { 
     Form<Job> filledForm = jobForm.bindFromRequest(); 
     Job.create(filledForm.get()); 
     return redirect(routes.Application.index()); 
    } 
} 

理想情況下,我想發送到我的方法Job.create(工作),與工作所有字段設置(字符串職位以及公司對象)。它必須是一個數字問題,我爲此道歉。任何幫助將不勝感激

非常感謝

+0

jobForm.fill(job)怎麼樣? – johanandren

+0

我不確定你要去哪裏。我只需要從表單中設置一個Job對象,我可以發送到我的方法Job.create –

+0

啊,對不起,讀一下這個問題有點太快了,誤解了。 – johanandren

回答

0

如果你想要的形式直接綁定到對象不能使用@inputText(companyForm("name")),而是可以使用用於選擇公司select形式幫手,檢查即。 computer-database樣這是相當類似的案件......

在另一方面,如果你有很多的企業,不希望創建巨大select考慮另外一種情況:只是替代路線一樣/job/new使用/company/:companyId/add-job換句話說就是你」馬上發送形式和要求其綁定+ additionaly將在航線PARAM通過id來獲取公司,並會添加到對象,僞代碼:

public static Result addJobToCompany(Integer companyId){ 

    Job job = form(Job.class).bindFromRequest().get(); 
    job.company = Company.find.byId(companyId); 
    job.save(); 

    return redirect(routes.Application.jobDetails(job.id)); 

} 
0

好吧,我正在回答我的問題,我一定不用解釋我的問題清楚。 簡單起見:我需要從表單中設置公司對象。找到我的解決方案 希望它會幫助你。

public class Job { 
    public String title; 
    @Valid 
    public Company company; 
} 

public class Company { 
    public String name; 
    public String email; 
} 

@(jobForm: Form[Job], companyForm: Form[Company]) 
    @form(routes.Application.newJob()) {  
    @inputText(jobForm("title"))    
    @inputText(jobForm("company.name"))      
<input type="submit" value="Create">  
}