如何将我的@ request param变量作为java中控制器层中的公共变量

时间:2015-12-16 06:50:52

标签: java spring

我在UI中创建了一个ajax调用。通过ajax调用,我发送一个String变量作为请求参数。现在我想在同一个类中的另一个方法中访问此请求param变量。如何将我的请求param变量作为公共变量。

这是代码。

<script>
    $(document).ready(function() {
        $("#cDetails").change(function() {
            var value1 = $('#cDetails:selected').text();
            $.ajax({
                type : 'POST',
                url : 'envi',
                data : {
                    cname : value1
                },
                success : function(result) {

               }
            });
        });
    });
</script>

这是我的控制器图层。

@RequestMapping(value = "/envi", method = RequestMethod.POST)
public @ResponseBody String getEnvironmentNames(@RequestParam String cname) throws SQLException {
    System.out.println("cname"+cname);
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("environments", new Environments());
    List<Environments>  environmentnamesList= loginDelegate.getEnvironments(cname);
    Gson gson = new Gson();
    System.out.println("gson"+gson);
    String jsonString = gson.toJson(environmentnamesList);
    System.out.println("jsonString"+jsonString);
    return jsonString;
}

在同样的文章中,我想访问这个cname varible。

@RequestMapping(value = "/retri", method = RequestMethod.GET)
public ModelAndView test(HttpServletRequest request, HttpServletResponse response, 
    @ModelAttribute("customer") Customer customer) throws Exception{

    system.out.println("cname " + cname);
}

任何人都可以建议我。

2 个答案:

答案 0 :(得分:0)

如果两个请求是由同一会话中的同一个客户端发出的,则可以将cname值添加到会话中。

getEnvironmentNames(@RequestParam String cname, HttpServletRequest rq){
...
 rq.getSession().setAttribute("cname", cname);
...
}

然后在测试中

test(HttpServletRequest request, HttpServletResponse response, 
    @ModelAttribute("customer") Customer customer) throws Exception{

    system.out.println("cname " + request.getSession().getAttribute("cname"));
}

如果不是这种情况,则需要将cname的值存储在像数据库这样的存储库中。

答案 1 :(得分:-1)

您可以在类中声明变量,并在第一次传递时将其设置为值。您可以在控制器中的任何方法中重复使用它。

private String var;

@RequestMapping(value = "/envi", method = RequestMethod.POST)  
public @ResponseBody String getEnvironmentNames(@RequestParam String cname)      throws SQLException {  
    System.out.println("cname"+cname);  
    var=cname;  
    ModelAndView modelAndView = new ModelAndView();  
    modelAndView.addObject("environments", new Environments());  
    List<Environments>   
    environmentnamesList=loginDelegate.getEnvironments(cname);  
    Gson gson = new Gson();  
    System.out.println("gson"+gson);  
    String jsonString = gson.toJson(environmentnamesList);  
    System.out.println("jsonString"+jsonString);  
    return jsonString;  

}

在这里

@RequestMapping(value = "/retri", method = RequestMethod.GET)  
public ModelAndView test(HttpServletRequest request, HttpServletResponse      response,   
    @ModelAttribute("customer") Customer customer) throws Exception{  

    system.out.println("cname" + **var**);  

}