0

嗨,我对 Spring 很陌生。我的项目涉及spring+hibernate+jsp。我非常担心交给我的任务

任务:

我想在会话中存储一个jsp文本框值,然后在步骤之后我想在spring控制器中检索它以继续数据库过程......请帮助我。

4

2 回答 2

1

在jsp中:

 <c:set var="name" value="yourname" scope="session"  />

在春天

  ServletRequestAttributes attr = (ServletRequestAttributes)  
     RequestContextHolder.currentRequestAttributes();
   HttpSession session = attr.getRequest().getSession();
   session.getAttribute("name");
于 2013-03-28T13:03:53.117 回答
1

如果您想使用 Spring 项目进行 4 步注册过程,我建议您查看 Spring Web Flow。您可以在此处找到示例教程并在 stackoverflow 和网络上进行搜索。它用于完全按照您的意愿行事。

否则,您需要将@SessionAttributes 添加到您的控制器并声明@ModelAttributes。这是一个例子:

    @SessionAttributes({"oneDto","secondDto", [...as many as you want...]})
    public class MyController {

        [...Declaration and init of forms and modelAttributes...]

        @RequestMapping(method = RequestMethod.POST)
        public String processFirstPage(
            @ModelAttribute("oneDto") OneDto infoFromFirstPage,
            BindingResult result, SessionStatus status) {

                    [...Do whatever you need...]

            //return form success view
            return "secondPageView"; //uses secondDto

        }

        @RequestMapping(method = RequestMethod.POST)
        public String processSecondPage(
            @ModelAttribute("oneDto") OneDto infoFromFirstPage, @ModelAttribute("secondDto") SecondDto infoFromSecondPage
            BindingResult result, SessionStatus status) {

                    [...Do whatever you need...]

            //return form success view
            return "thirdPageView";

        }
    }

从 JSP 的角度来看,dto 在表单的“modelAttribute”中声明,所有字段都在输入、选择等路径中:

<form:form method="post" modelAttribute="oneDto" action="matchResquestMappingURL" enctype="application/x-www-form-urlencoded">
<form:input path="oneField"/> 
etc.

完整的 TLD 描述在这里

您不必使用多个 DTO,您可以使用同一个并在每个页面上添加更多信息。使用完数据后,请致电status.setComplete();清理会话。

这只是您理解该概念的基础,但还有许多其他方法可以解决此问题。例如,您可以在这里查看。(多页表格)

于 2013-03-29T10:03:44.600 回答