JS中获取ModelAndView对象中值

本文探讨了在JavaScript文件中如何获取由Java Controller传递给JSP页面的ModelAndView值,介绍了两种实现方法:直接在JSP内嵌JavaScript中使用EL表达式及利用隐藏字段在外部JavaScript文件中获取。

这里写图片描述


腊八节快乐,继续码博客!

在平时开发中,我们知道controller中封装在ModelAndView中的值,我们在Jsp页面上可以用EL标签取出值.那么在Js文件中我们可以获取到ModelAndView值的吗?接下来,我们一起探究!


1. 方法一

在示例的Controller中,我们将”userId”放入ModelAndView中.

Controller:

 @RequestMapping(value="/diary")
    public ModelAndView toDiaryList(HttpSession session){
        ModelAndView view =  new ModelAndView("/diary_list");
        TbUser user = (TbUser)session.getAttribute(SystemConstant.CURRENT_USER);

        //set info of current user
        if(user!=null){
            Integer id = user.getId();
            view.addObject("userId",id);
        }

        return view;
    }

Jsp:

    <script type="text/javascript">
        var path = '<%=basePath%>';
        var author=${userId};
        $(document).ready(function(){
            queryList();
        });

        function queryList(){
            $.ajax({
                type : 'POST',
                url : path+'queryDiaryList', //通过url传递name参数
                data : {
                        author:author,
                        page:_currentPage,
                        pageSize:_pageSize,
                        type:$("#queryType").val()
                    },
                dataType : 'json',
                success:function(data){
                    if(data.status){
                        showTable(data.result);
                        //调用分页插件,初始化分页Div
                        pageShow("queryList",data.ext.total);
                    }else{
                        alert(data.description);
                    }
                },
                error:function(e){
                    alert("Net error ,try later.");
                }
            });
        }
        </script>

总结:此方法适用用jsp页面内容和js文件写在一起的


2,方法二

在Jsp页面添加隐藏字段,并赋值,在Js文件获取值

Jsp:


 <input id="autoflag" type="hidden" value="${autoflag}"> 

Js:


 var passflag=document.getElementById("autoflag");
 

总结:此方法适用用jsp页面的js文件从外部引入

### 获取 ModelAndView 中的列表数据 在前端 JavaScript 中获取后端通过 `ModelAndView` 传递的列表数据,可以通过以下方式实现: 1. **将列表数据转换为 JavaScript 可用的格式** 后端可以将列表数据传递给前端模板引擎(如 Thymeleaf 或 JSP),然后通过模板语法将数据嵌入到 JavaScript 代码中。例如,在 JSP 中使用 JSTL 的 `<c:forEach>` 遍历列表并构造 JavaScript 数组对象。以下是一个示例: ```javascript var arr = new Array(); <c:forEach items="${flowNodeAndDeadList}" var="module"> var module = {"id":"${module.node_id}","name":"${module.node_name}"}; arr.push(module); </c:forEach> ``` 这段代码通过 `<c:forEach>` 遍历 `flowNodeAndDeadList` 列表,并将每个元素的属性赋给 JavaScript 对象,最终将这些对象推入数组 `arr` 中,从而在前端获取完整的列表数据[^2]。 2. **Thymeleaf 模板引擎中的实现方式** 如果使用 Thymeleaf 模板引擎,可以通过内联脚本的方式将后端数据传递给 JavaScript。例如: ```html <script th:inline="javascript"> var single = [[${singlePerson}]]; console.log(single.name + "/" + single.age); </script> ``` 这种方式允许在 JavaScript 中直接访问后端模型数据。对于列表数据,也可以通过类似的方式将其转换为 JSON 格式并嵌入到 JavaScript 中。例如: ```html <script th:inline="javascript"> var dataList = /*<![CDATA[*/[[${dataList}]]/*]]>*/; console.log(dataList); </script> ``` 这里 `dataList` 是后端传入的列表数据,前端可以直接通过 `dataList` 访问该数据[^1]。 3. **JSON 数据格式化与解析** 如果后端数据以 JSON 格式传递,前端可以通过 `JSON.parse()` 方法解析数据。例如: ```javascript var jsonData = '{"name":"John", "age":30, "city":"New York"}'; var obj = JSON.parse(jsonData); console.log(obj.name); // 输出 "John" ``` 如果后端返回的数据已经是 JSON 格式,前端可以直接使用此方法将其转换为 JavaScript 对象。 4. **AJAX 请求获取数据** 另一种常见的方式是通过 AJAX 请求从后端获取列表数据。例如,使用 jQuery 的 `$.ajax()` 方法: ```javascript $.ajax({ url: '/api/data', method: 'GET', success: function(response) { console.log(response); // 处理返回的列表数据 }, error: function(xhr, status, error) { console.error('请求失败:', error); } }); ``` 这种方式适用于后端提供 RESTful API 接口的情况,前端通过异步请求获取数据,避免页面刷新。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值