【问题标题】:How to pass values from Spring Controller to jsp page?( the passed values is to be used to intialise javascript variables in jsp page如何将值从 Spring Controller 传递到 jsp 页面?(传递的值将用于初始化 jsp 页面中的 javascript 变量
【发布时间】:2019-02-20 15:02:59
【问题描述】:

下面是我的 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页面的代码sn-p

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

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

我的意图是将上述变量初始化为,bs,cs 与 int a, int b, int c(来自上面提到的 Spring 控制器)

【问题讨论】:

  • 尖叫声太多了。
  • 所以使用"&lt;%=myVar%&gt;"???
  • @epascarello。对不起,尖叫。
  • @epascarello。对不起,你能把答案说得更清楚吗?对不起。
  • 你试过 var as="${a}" 吗?

标签: javascript java spring-mvc jsp


【解决方案1】:

从控制器发送 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>

希望这会有所帮助。

【讨论】:

  • 感谢您的关注,但请求。符号未解析(在 IntelliJ 中显示错误,显示为红色),抱歉,我不明白“在 adminHome 中传递 HttpServletRequest 对象”的含义,谢谢
  • 抱歉我的代码更新错误,如果有帮助请检查并告诉我
  • 谢谢 Nishant,作为 java 的初学者,我无法轻松实现您的代码。Sanjay 的评论很容易解决了这个问题,因为我更容易实现(因为我是初学者)。感谢您的努力将很快测试您的代码..
【解决方案2】:

找到了一个简单的答案,感谢 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 等。

但请注意,如果取到的值如果需要作为Integer使用,则必须进行转换。目前是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 会将其转换为整数,以便在将来的某些函数中使用它。 谢谢大家,问题解决了:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多