3

在我的 Spring MVC 应用程序中,我有 2 页。
我有一个包含 10 个变量的对象。在第一页中,我设置了上述对象的 9 个变量(第一页有 9 个字段)。我在会话中设置了这个对象,并在控制器中设置了模型属性。我还需要将同一个对象传递到下一页。在第二页中,我需要在同一个对象中设置第 10 个变量(第二页只有一个字段第 10 个字段)。(为什么我需要第二页来设置第 10 个变量是 - 在第二页中,我根据第一页中的条目填充下拉列表)

当我在第二页提交表单时 - 我需要提交具有 10 个变量的相同对象。(由于我的公司政策,我无法粘贴代码)有人可以帮我解决这个问题吗?

4

4 回答 4

1

请注意,这两种方法都在同一个控制器中。你需要做这样的事情:

@Controller
@SessionAttributes("myObject")
public class SessionAttributesController {

    // Save session attribute in model. 
    @RequestMapping(value = "/page1.html", method = RequestMethod.GET)
    public String page1( @ModelAttribute MyClass myObject, ModelMap model ) {
        model.addtAttribute("myObject", myObject);
        return "page1.html";
    }

    // Now you model is having myObject, so it has to be used in jsp. You can add ModelMap parameter to this method and check what contains model in debug mode.   
    @RequestMapping(value = "/page2.html", method = RequestMethod.GET)
    public String page(ModelMap model) {
          model.get("myObject").setAttr10(value);   
          return "page2.html";
    }

}
于 2013-10-30T08:29:58.893 回答
0

这可以通过以下方式完成:

@Controller
public class PageController {
    @RequestMapping("/page1")
    public String showPage1(Model model) {
        Obj obj = new Obj();
        model.addAttribute("obj", obj);
        return "test/page1";
    }

    @RequestMapping("/page2")
    public String showPage2(@ModelAttribute Obj obj, Model model) {
        model.addAttribute("obj", obj);
        return "test/page2";
    }

    @RequestMapping("/page3")
    public String showPage3(@ModelAttribute Obj obj, Model model) {
        model.addAttribute("obj", obj);
        return "test/page3";
    }
}

第 1 页(仅相关部分):

<sf:form modelAttribute="obj" action="page2">
<sf:input path="field1"/><br/>
<sf:input path="field2"/><br/>
<sf:input path="field3"/><br/>
<input type="submit" value="To page 2">
</sf:form>

第2页:

<sf:form modelAttribute="obj" action="page3">
<sf:hidden path="field1"/>
<sf:hidden path="field2"/>
<sf:hidden path="field3"/>
<sf:input path="field4"/><br/>
<sf:input path="field5"/><br/>
<input type="submit" value="To page 3">
</sf:form>

第 3 页仅用于显示在前 2 页输入的所有对象字段。

于 2013-11-13T20:05:20.063 回答
0

如果您认为您将拥有这些向导类型的屏幕,您应该考虑使用spring-webflow。如果出现更复杂的场景,Spring-Webflow 的 DSL 将帮助您管理它们。

您可以从这里获得有关 Spring-Webflow 的基本介绍。

于 2013-11-18T16:42:24.257 回答
0

如果您考虑了所有其他选项(我的意思是模型属性等),我建议您使用 Spring-Web-Flow 来执行此操作(如果您正在谈论的两个页面是相关的),这样您可以确保数据将被传输从一页到另一页。

参考: http ://docs.spring.io/spring-webflow/docs/1.0.3/reference/practical.html

希望这有效。

问候阿肖克·古迪斯

于 2013-11-18T18:40:30.557 回答