如何将值从Spring Controller传递到jsp页面?(传递的值将用于初始化jsp页面中的javascript变量

时间:2019-02-20 15:02:59

标签: javascript java spring-mvc jsp

下面是我的Spring Controller代码。我的意图是将变量int a,int b,int c的值传递给Jsp页面ADMINRESULTS。

请注意,这些变量的值将用于在adminhome jsp页面中初始化javascript变量

@RequestMapping("/adminresults")  //this is called by form action. This does not refer to adminhome jsp page

    public String adminhome(Map<String, Object> model) {




        ArrayList<Block> blockChain = NoobChain.getBlockChain();
        Map<String, Integer> dataMap = new HashMap<String, Integer>();
        if (!blockChain.isEmpty()) {

            if (!NoobChain.isChainValid(blockChain)) {    //if not valid to print the data.
                model.put("tampermsg", "Unathorized acess detected and vote data is attacked.Correct values are ");

                dataMap = NoobChain.validChainData(blockChain);
            } else {
                dataMap = blockChain.get(0).getData();

            }
        }
        String blockchainJsonFromFile = new GsonBuilder().setPrettyPrinting().create().toJson(blockChain);
        System.out.println("after.." + blockchainJsonFromFile);

        model.put("message", "\n" + dataMap);
        System.out.println("Before extracting DATA is "+dataMap);//to check the format of data map
        int a=0;
        int b=0;
        int c=0;
        if (dataMap.containsKey("A"))
        {
            a = dataMap.get("A");
            System.out.println("value for key \"A\" is:- " + a);
        }
        if (dataMap.containsKey("B"))
        {
            b = dataMap.get("B");
            System.out.println("value for key \"B\" is:- " + b);
        }
        if (dataMap.containsKey("C"))
        {
            c = dataMap.get("C");
            System.out.println("value for key \"C\" is:- " + c);
        }
        model.put("a", a);
        model.put("b", b);
        model.put("c", c);



        return "adminhome"; //significance of this code is to return adminhome jsp page
    }

下面是adminhome jsp页面上的代码段

<html>
<head> </head>
<body>
<script type="text/javascript">

            var as=8,cs=1,bs=4;
</script>
</body>
</html>

我的意图是用int a,int b,int c(来自上面提到的Spring Controller)将以上变量初始化为bs,cs。

2 个答案:

答案 0 :(得分:0)

  

从控制器发送json对象,并分配给html上的隐藏变量,然后在Java脚本中使用该对象。   下面是代码,只是

下的sudo代码      

内部控制器

List<Someclass> list = new ArrayList<>();
     Someclass someClass = new Someclass();
     someClass.setKey("a");
     someClass.setValue(1);
     list.add(someClass);
     Gson gson = new Gson();
     ModelAndView modelAndView = new ModelAndView("adminhome");
     modelAndView.addObject("list", gson.toJson(someClass));
  

JSP

  	
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

    <html>
    <script type="text/javascript">
    	$(document).ready(function() {
    		var someClassJson = $('#"admin"');
    		list		admins = JSON.parse(someClassJson.val());
    				for (var i = 0; i < admins.lenth; i++) {
    			var item = admins[i];
    			console.log(someClass.key);
    			console.log(someClass.value);
    		}
    	});
    </script>
    <head>
    <title>Admin Example</title>
    <script src="jquery-1.11.3.min.js"></script>
    <script type="text/javascript" src="personScript.js"></script>
    </head>
    <body>
    	<h1>
    		<Admin/h1> <input type="hidden" id="admin"       value="${list}"/>
    </body>
    </html>

  

希望这会有所帮助。

答案 1 :(得分:0)

找到一个简单的答案,谢谢桑杰(Sanjay)的帮助,尼桑·拉杰(Nishant Raj)(也请检查他的代码,作为我的初学者,我无法实现他的代码)

在adminhome jsp页面中

<html>
<head> </head>
<body>
<script type="text/javascript">

            var aa="${a}",bb="${b}",cc="${c}";
</script>
</body>
</html>

上面的代码将从spring控制器中获取值到javascript变量aa,bb,cc等。

但是请注意,如果需要将获取的值用作整数,则必须将其转换。目前它是String类型的。

它的代码是。

 <html>
    <head> </head>
    <body>
    <script type="text/javascript">

                var aa="${a}",bb="${b}",cc="${c}";
                var as=parseInt(aa),cs=parseInt(cc),bs=parseInt(bb);
    </script>
    </body>

</html>

parseInt会将其转换为整数,以便在将来的某些函数中使用它(如果需要)。 谢谢大家,问题已解决:)