我是玩游戏的新手!框架2.X并有一个简单的问题。 如何向我的方法Job.create(filledJob)发送一个完全设置的Job对象?这意味着包含在Job对象中的Company对象也被填充。
我有以下内容:
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(job),其中包含所有字段设置的作业(字符串作业标题以及公司对象)。这一定是一个愚蠢的问题,我为此道歉。任何帮助将不胜感激
非常感谢
答案 0 :(得分:0)
如果要将表单直接绑定到对象中,则不能使用@inputText(companyForm("name"))
,而是可以使用select
表单帮助程序来选择公司,请检查ie。 computer-database
示例这是非常相似的案例......
另一方面,如果你有很多公司并且不想创建巨大的select
,请考虑另一种情况:换句话说就像/job/new
一样使用/company/:companyId/add-job
换句话说你将发送一个表格并将其从请求中绑定+另外将在路由参数中通过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));
}
答案 1 :(得分:0)
好的,我回答了我自己的问题,因为我不能清楚地解释我的问题。 为简单起见:我需要从表单中设置Company对象。找到我的解决方案 希望它会对你有所帮助。
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">
}