【问题标题】:Spring MVC preview implementationSpring MVC 预览实现
【发布时间】:2013-12-13 04:18:38
【问题描述】:

我有以下任务:使用 Spring MVC 实现“预览”功能。 最好知道实现它的最佳方式:

这是一项直截了当的任务 1. 填充新表格并将此表格保存在数据库中: 为了在 jsp 页面上执行此操作,我们有一个 spring 表单,我们将其传递给控制器​​并从中保存。 2.编辑一些表单数据: 因此,为了做到这一点,我们将对象 id 传递给控制器​​,控制器从 DB 中读取必要的数据 -> 用户可以对其进行编辑并再次保存在 DB 中。

但似乎没有直接的机制来实现“预览”功能。

例如:我们有一个表单,用户可以向表单添加必要的值,然后我们应该在单独的屏幕上显示这些数据(用户添加)的样子(我们执行一些数据操作并显示如何这个数据看起来像不同的工具)。

在代码中我们有以下情况:

  1. 在控制器中为了渲染预览,我们传递了我们的模型:

    @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页面。

【问题讨论】:

  • 在预览页面的表单的隐藏输入中添加表单属性应该可以工作。
  • 但是当表单包含大量字段时,我们在jsp页面中会有很多不必要的数据。

标签: java spring jsp spring-mvc


【解决方案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 ;-)

【讨论】:

  • 在“预览”jsp 页面中,我没有表单,也不喜欢使用所有参数创建隐藏表单。我将如何提交 SomeForm 表单以返回编辑页面?
  • 你不必隐藏表单,你必须隐藏一个“预览”它只有在设置时才会显示,在你的jsp中使用&lt;c:if test=${not empty foo}&gt;
【解决方案2】:

在显示提交值的预览页面中,添加一个表单并在hidden inputs 中添加所有表单属性。预览页面上的submit 应该采用save 方法而不是preview 保存到db。

【讨论】:

  • 主要问题是我们不想在“preview.jsp”上完全复制表单,因为我们在“edit.jsp”上有这个表单
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-20
  • 2011-12-03
  • 2014-09-06
  • 2010-12-15
相关资源
最近更新 更多