我有以下任务:使用Spring MVC实现“预览”功能。 了解实施它的最佳方法将是很好的:
这是一项直截了当的任务 1.填充新表单并将此表单保存在DB中: 为了在jsp页面上执行此操作,我们有一个弹簧形式,我们将其传递给控制器并保存。 2.编辑一些表单数据: 因此,为了做到这一点,我们将对象id传递给控制器,控制器从DB读取必要的数据 - >用户可以编辑它并再次保存在数据库中。
但看起来没有直接的机制来实现“预览”功能。
例如:我们有一个表单,用户可以在表单中添加必要的值,然后我们应该在单独的屏幕上显示这些数据(用户添加的)的样子(我们执行一些数据操作和diplaying如何这些数据看起来与不同的工具相似。)
在代码中我们有以下情况:
在控制器中为了渲染预览,我们传递了我们的模型:
@RequestMapping(value =“/ preview”,method = RequestMethod.POST) public String preview(@ModelAttribute(“form”)SomeForm form){ 返回“预览”; }
在preview.jsp上我们有可能以适当的方式呈现它:
<div class="preview">
<div id="1">${form.field1}</div>
<div id="2">${form.field2}</div>
</div>
在这个jsp页面上,我们没有表格。
为了返回编辑页面,我们需要传递一个表单对象,因为我们的控制器需要它:
@RequestMapping(value = "/admin/save", method = RequestMethod.POST)
public String save(@ModelAttribute("form") SomeForm form ){
主要问题是将此表单传回原始的jsp页面。
答案 0 :(得分:1)
添加其他方法来设置预览
...
@RequestMapping(value = "/admin/preview", method = RequestMethod.POST)
public ModelAndView preview(@ModelAttribute("form") SomeForm form ){
model = new ModelAndView();
model.addObject("form", form);
model.setViewName("jspPath")
return model;
}
@RequestMapping(value = "/admin/save", method = RequestMethod.POST)
public String save(@ModelAttribute("form") SomeForm form ){
...
}
在jsp中你必须用新参数重新填充表单,或使用javascript; - )
答案 1 :(得分:0)
在w预览页面中显示提交的值,添加表单并在hidden inputs
中添加所有表单属性。预览页面上的submit
应采用save
方法而不是preview
来保存到数据库。