2011-08-29 31 views
1

如何从表单对象获取值供其他类使用。 我们称之为Sample.java。如何使 JSP form提供的值可用于Sample.java类,并将其保留在该位置以供用户注销。如何在Spring MVC中共享表单的成员?

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

@RequestMapping(value = "abc/xyz/dummyPath.html", method = RequestMethod.POST) 
    public String processThisValue(@ModelAttribute("myValues") MyBean myBean, 
      ModelMap model) 
    { 

     log.info("I am in my controller........."); 

     String valuePassed = myBean.getValuePassed(); 

     log.info("Prints fine here: " + valuePassed); 

     return ""; 
    } 
+0

我没有在代码中看到'Sample'类,但是除非将对象保存到会话或序列化并在需要时进行反序列化,否则您尝试执行的操作是不可能的。 – gigadot

+0

嗨gigadot,Sample.java只是一个普通的类,里面有几个方法。你认为会议会在这里工作吗?我们可以使用会话将变量从servlet(控制器)传递给常规类吗? – user918171

+0

我无法理解你在这里上课的意思。如果在控制器方法中创建了一个对象,那么是的,您可以使用会话。 – gigadot

回答

0

该解决方案有两个部分:

1)

,直到用户注销它保留下来以供使用。

您可以使用Session scoped bean来保存该值。

2)

如何让我从可用到类JSP表单提交的值Sample.java

所述控制器存储在会话bean提交的值。 Simple.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()); 
    } 
} 
0

您可以使用HttpSession中设置你的Spring MVC控制器

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

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


    } 

内用户会话@Scope会话注释很好,但是一旦你的控制器变得太大,它可能会导致一些缩放问题。我更喜欢老繁琐的HttpSession :)

相关问题