如何在 Jquery 中访问模型属性(列表)

Posted

技术标签:

【中文标题】如何在 Jquery 中访问模型属性(列表)【英文标题】:How do you access a model attribute (liste) in Jquery 【发布时间】:2017-11-11 09:13:04 【问题描述】:

如何从 Spring 模型中读取模型“列表”并将其设置为循环中的 jquery?我使用 Thymeleaf 作为模板引擎。

弹簧端:rdv.java

@RequestMapping(value = "/RdvListe", method = RequestMethod.GET)
public String RdvListe(Model model) 

    List<Rdv> listRdv=rdvMetierImp.listRdv();

    model.addAttribute("listRdv",listRdv);

    return "RdvListe";

客户端:script.js

$(function () 
    var events = [
        
            title: 'Rdv with adam',
            start: '2017-06-09'
        
    ];
);

结果是这样的:

$(function () 
    $.each(listRdv, function (key, value) 
        var events = [
            
                title: value.title,
                start: value.date'
            
        ];
    );
);

【问题讨论】:

【参考方案1】:

你可以在官方Thymeleaf中找到documentation:

<script th:inline="javascript">
/*<![CDATA[*/
...

var listRdv= [[$listRdv]];

...
/*]]>*/

【讨论】:

你不想要什么? 在 javascript 中获得它后,您可以循环浏览它【参考方案2】:

html 页面中编写以下脚本

<script th:inline="javascript">
var listRdv= [[$listRdv]];
</script>

在 script.js 文件中使用 listRdv 变量

var events=[];

$.each(listRdv, function(index,value)

  var event=
          title: value.title,
          start: value.date'
            ;
  events.push(event);

)

【讨论】:

【参考方案3】:

作为一个选项,您可以使用从 Java 对象到 JSON 的转换器。如Jackson。

那么你的代码可以如下:

ObjectMapper mapper = new ObjectMapper();
String jsonInString = mapper.writeValueAsString(listRdv);
model.addAttribute("listRvd", jsonInString);

然后在您的 thymeleaf 模板中,您可以将此 JSON 对象分配为 javascript 变量。

虽然这不是您可以尝试的最佳做法。

【讨论】:

以上是关于如何在 Jquery 中访问模型属性(列表)的主要内容,如果未能解决你的问题,请参考以下文章

如何在保持内部类私有的同时创建嵌套模型?

如何在常用的 JS 函数中访问 JQuery 属性

绑定视图 - 如何从子列表中获取父属性的详细信息

如何在 Javascript 中访问模型属性

在 jQuery 回调中访问父属性

如何在 Eloquent 模型中使用 Laravel Livewire?