Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SpringMVC中共享表单的成员?_Java_Spring_Jsp_Spring Mvc - Fatal编程技术网

Java 如何在SpringMVC中共享表单的成员?

Java 如何在SpringMVC中共享表单的成员?,java,spring,jsp,spring-mvc,Java,Spring,Jsp,Spring Mvc,如何使从表单对象检索到的值可用于另一个类。 让我们调用这个类Sample.java。如何生成从提交的值 JSP表单可用于类Sample.java,并将其保存在那里以供使用,直到用户注销 我尝试在如下所示的Controller方法中添加一个公共字符串变量,然后在Sample.java中创建一个Controller实例来获取该值,但它总是返回null 解决方案分为两部分: 一, 并将其保存在那里以供使用,直到用户注销 您可以使用会话范围的bean来保存该值 二, 如何使从JSP表单提交的值可用于类S

如何使从表单对象检索到的值可用于另一个类。 让我们调用这个类Sample.java。如何生成从提交的值 JSP表单可用于类Sample.java,并将其保存在那里以供使用,直到用户注销

我尝试在如下所示的Controller方法中添加一个公共字符串变量,然后在Sample.java中创建一个Controller实例来获取该值,但它总是返回null


解决方案分为两部分:

一,

并将其保存在那里以供使用,直到用户注销

您可以使用会话范围的bean来保存该值

二,

如何使从JSP表单提交的值可用于类Sample.java

控制器将提交的值存储在该会话bean中。java类也是一个bean,访问该bean以获取值

我现在没有IDE,所以我需要把它写一点

@Component
@Scope(BeanDefinition.SCOPE_SESSION)
public class MySessionBean()

  private String content;

  Getter/setter
}

@Controller
...

   @Autowire
   private MySessionBean mySessionBean;

   ...
   public String processThisValue( @ModelAttribute( "myValues" ) MyBean myBean,
        ModelMap model) {
     //myBean is only a simple class!!!!!
     ...
     this.mySessioBean.setContent(valuePassed);
     ...
   }


@Service
public class Sample() {

  @Autowire
  private MySessionBean mySessionBean;

  public void doSomething() {
     System.out.println("the current users value:" + mySessionBean.getValue());
  }
 }

您可以使用Httpsession在SpringMVC控制器内设置用户会话

public String processThisValue( @RequestParam("value") String value, HttpSession session
        ModelMap model) {

         MyBean.setTheValue("value");
         session.setAttribute("key", MyBean);
         return "somepage";


   }

@范围会话注释很好,但一旦控制器太大,它可能会导致一些缩放问题。我更喜欢旧的乏味的HttpSession:

我在代码中看不到Sample类,但除非您将对象保存到session中,或者在需要时对其进行序列化和反序列化,否则您尝试执行的操作是不可能的。您好,gigadot,Sample.java只是一个普通类,其中包含两个方法。你认为这次会议在这里行吗?我们可以使用session将变量从servletcontroller传递到常规类吗?我很难理解这里传递到类的意思。如果在控制器方法中创建了对象,则是,您可以使用会话。
public String processThisValue( @RequestParam("value") String value, HttpSession session
        ModelMap model) {

         MyBean.setTheValue("value");
         session.setAttribute("key", MyBean);
         return "somepage";


   }