gpt4 book ai didi

javascript - 将 Spring 模型变量从 JSP 模板传递到 javascript

转载 作者:行者123 更新时间:2023-11-28 01:08:48 24 4
gpt4 key购买 nike

<script>内jsp 文件中的标记我有一些如下所示的代码:

var chart = new myChart({'id': ${user.id}, 'type': ${user.type}, 'name': {user.name});

哪里user是在服务器端设置的 Spring 模型属性。我的问题是,传递每个不同领域的用户感觉很笨拙。如果我能做这样的事情那就太好了:

var chart = new myChart('user': "${user}");

但是,当这样做时, ${user} 的值将是一个如下所示的对象字符串:
User{id=1, type='admin', name='foo'}
我知道我可以将此字符串解析为外部 js 中的对象,但感觉应该有一种更简洁的方法来执行此操作。感谢您的帮助。

编辑:根据下面卡梅伦的回答,我可以将其添加到我的服务器端 Controller 代码中:

model.put("user", user);  
String userJSON = MyJSONSerializer.serialize(user);
model.put("userJSON", userJSON);

然后在我的 JSP 中我可以这样做:

var chart = new myChart({'user': JSON.parse('${userJSON}')});

这确实解决了我的选项对象困惑的问题,但它带来了对相同的精确数据使用两个模型属性的问题。如果我可以为 user 使用一个模型属性,那就太理想了对象,然后可以以某种方式将其动态编码为 JSON。

最佳答案

您可以使用类似 Jackson 的库将对象转换为 JSON :

public static String objectAsJSON(Object obj) {

try
{
// This could be optimized by making a static ObjectMapper
return new ObjectMapper().writeValueAsString(obj);
}
catch (IOException e)
{
// Log exception and re-throw or return null
return null;
}
}

您可以在将对象放入模型之前调用此方法,并在 JSP 中引用字符串,如下所示:

var chart = ${jsonChart};

或者您可以编写一个自定义标记库并从那里调用objectAsJSON()。然后,实际的 myChart 对象可以进入您的模型一次。您的 JSP 可能如下所示:

var chart = <chartlib:toJson obj="${chart}" />;

关于javascript - 将 Spring 模型变量从 JSP 模板传递到 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24739662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com