更新形式:Spring MVC +百里香叶

Mir*_*scu 5 spring-mvc thymeleaf

我正在尝试创建一个百里香形式来仅更新支持对象的几个属性:

@RequestMapping(value = "/jobs/{id}", method = RequestMethod.GET)
public ModelAndView update(@PathVariable Integer id ) {
    ModelAndView mav = new ModelAndView("updateJob.html");
    JobDescription updateJob = jobDescriptionService.findByID(id);
    mav.addObject("updateJob", updateJob);
    return mav;
}

@RequestMapping(value = "/jobs/{id}", method = RequestMethod.PUT)
public String saveUpdate(@PathVariable Integer id, @ModelAttribute("updateJob") JobDescription updateJob) {
    jobDescriptionService.update(updateJob);
    return "redirect:/jobs/" + id;
}


<form th:action="@{'/jobs/'+ ${updateJob.id}}" th:object="${updateJob}" th:method="PUT">
    <table>
        <tr>
            <td><label>Description</label></td>
            <td><input type="text" th:field="*{description}" /></td>
        </tr>
        <tr>
            <td><label>Deadline</label></td>
            <td><input type="text" th:field="*{deadline}" /></td>
        </tr>
        <tr>
            <td></td>
            <td><button type="submit">Update</button></td>
        </tr>
    </table>
</form>
Run Code Online (Sandbox Code Playgroud)

问题是作业对象还有一些其他我不想更新的属性(例如id,createdDate等)。但是,当我单击更新表单的提交按钮时,在saveUpdate方法中创建的对象会将这些属性设置为null(除非我在表单内部的隐藏字段中设置了这些属性)。我还有其他办法可以保留它们吗?

小智 -5

var editOptions = {
    url: '/Admin/EditPost', 
    editCaption: 'Edit Post',
    processData: "Saving...",
    width: 900,
    closeAfterEdit: true,
    closeOnEscape: true,
    afterclickPgButtons: afterclickPgButtons,
    afterShowForm: afterShowForm,           
    onClose: onClose,
    afterSubmit: JustBlog.GridManager.afterSubmitHandler,
    beforeSubmit: beforeSubmitHandler
};

$(gridName).navGrid(pagerName, 
{
    cloneToTop: true,
    search: false
}, 
editOptions, addOptions, {}); 
Run Code Online (Sandbox Code Playgroud)

  • 代码转储可不是什么好事。解释这是如何解决问题的。另外,我很确定 OP 使用的是 Java,而不是 JavaScript。 (2认同)