【发布时间】:2015-12-02 17:42:55
【问题描述】:
首先我有两个表格作业,类别在图表中为
我的实体是:
@Entity
@Table( name = TableName.JOB_TABLE)
public class Job {
@Id
@GeneratedValue
private Integer id;
private String title;
private String description;
@OneToMany(mappedBy = "job")
private List<Category> categories;
// omitting setters an getters for brevity
}
和
@Entity
@Table( name = TableName.CATEGORY_TABLE)
public class Category {
@Id
@GeneratedValue
private Integer id;
private String name;
@ManyToOne
@JoinColumn(name = "job_id")
private Job job;
// omitting setters an getters for brevity
}
JobService 是
@Service
public class JobService implements IDatabaseCrud<Job>{
@Autowired
private JobRepository jobRepository;
@Autowired
private CategoryRepository categoryRepository;
public void saveCategory(Job job) {
List<Category> categories = job.getCategories();
for (Category category : categories) {
category.setJob(job);
categoryRepository.save(category);
}
}
@Override
public void save(Job obj) {
// TODO Auto-generated method stub
jobRepository.save(obj);
saveCategory(obj);
}
}
现在我没有任何想法要保存新工作,我必须保存一个从列表中选择了许多类别的工作。
<form:form commandName="job">
<form:input path="title"/><br>
<form:input path="company"/><br>
<form:input path="location"/><br>
<form:input path="url"/><br>
<form:input path="email"/><br>
<form:input path="description"/><br>
<form:select path="categories">
<form:options items="${categories}" itemValue="id" itemLabel="name"/>
</form:select><br>
<form:input path="createdAt"/><br>
<form:input path="toApply"/><br>
<input type="submit" value="Add Job">
</form:form>
上面的表单没有向控制器提交数据并给出错误 HTTP 状态 400 - 客户端发送的请求在语法上不正确。 跟随控制器我想将这些详细信息保存到数据库
@Controller
public class JobController {
private static final Logger logger = LoggerFactory.getLogger(JobController.class);
@Autowired
private JobService jobService;
@Autowired
private CategoryService categoryService;
@ModelAttribute("job")
public Job constructJob() {
return new Job();
}
@RequestMapping(value = "/jobs", method = RequestMethod.GET)
public String showJobs(Model model) {
model.addAttribute("jobs", jobService.findAll());
return "jobs";
}
@RequestMapping(value = "/jobs/{id}", method = RequestMethod.GET)
public String showJobDetail(Model model, @PathVariable Integer id) {
model.addAttribute("job", jobService.findJobWithCategories(id));
return "job-detail";
}
@RequestMapping(value = "/show-add-job", method = RequestMethod.GET)
public String showJobForm(Model model) {
model.addAttribute("categories", categoryService.findAll());
return "add-job";
}
@RequestMapping(value = "/show-add-job", method = RequestMethod.POST)
public String addJobDetail(@ModelAttribute("job") Job job) {
///jobService.save(job);
List<Category> categories = job.getCategories();
for (Category category : categories) {
logger.info("DEBUG job object", category);
}
return "redirect:/jobs";
}
}
当我提交收到HTTP Status 400 的表单时,我无法使用上述内容保存工作。形式上有些错误。
This is URL 到那个项目。
【问题讨论】:
-
你的web.xml没有定义spring dispatcher servlet,请添加定义后再检查。
-
@KrishnatMolawade 当我使用WebApplicationInitializer 时,web.xml 中不需要 spring 调度程序 servlet 定义。
-
哦,我的错...谢谢
-
您向我们展示了什么观点?那是“附加工作”吗?
-
我没有在视图中看到实际访问“/show-add-job”的链接。您只是手动导航到那里吗?
标签: java forms spring-mvc jpa