gpt4 book ai didi

java - Springs MVC JSON 响应并将其转换为 JS 对象

转载 作者:行者123 更新时间:2023-11-29 16:18:16 25 4
gpt4 key购买 nike

我有一个问题,我如何从 Springs MVC 发送 JSON 对象,以便我可以将它转换成我的 HTML 页面上的 JavaScript 对象。

我以传统方式执行此操作:下面是 Java Servlet 的片段,它设置请求属性并将其转发到 JSP 页面。

   JSONObject jsonObj = new JSONObject();
jsonObj.put("name","test");
jsonObj.put("age",24);
request.setAttribute("jsonObj",jsonObj);
request.getRequestDispatcher("test.jsp").forward(request,response);

在 JSP 中,我检索为:

   <script type="text/javascript">
var jsonObj =<%=request.getAttribute("jsonObj"); %>;
alert("name = "+jsonObj.name+" ; age = "+jsonObj.age); // This will output name and age from the JSON Object
</script>

所以我需要问的是如何在 Springs MVC 中做同样的事情。如何从 Dispatcher Servlet 发送 JSONObject,并在我的 JSP 页面中将其转换为 JS 对象?

最佳答案

使用 ObjectMapper 可以轻松做到这一点。它将从您的对象创建一个 JSON 字符串。并且您可以将其发送到您的 View /jsp。

我放了一个我这样做的 Controller 的小例子(只是剪掉了)。

@Controller
public class UsersSettingsController {

@Autowired
UserSettingsDefaultService userSettingsService;


@RequestMapping(value="/userSettings/dynamic/userSettings", method=RequestMethod.GET)
public ModelAndView get() throws Exception {
ModelAndView mav = new ModelAndView();
ObjectMapper mapper = new ObjectMapper();


User user = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
UserSettings userSet = userSettingsService.getUserSettingsByUser(user);

mav.addObject("userSettingsJSON", mapper.writeValueAsString(userSet));

mav.setViewName("userSettings/dynamic/filter");


return mav;
}
}

或者您当然可以像您在示例中所做的那样在您的 Contoller 中逐步创建您的 JSON 对象。然后你不需要映射器,只需将字符串发送到你的 View 。

在 JSP 中,您将像这样的 json 字符串加载到 JS var 中:

var jsonString = '${userSettingsJSON}';

要从 JSON 字符串中获取元素或解析,请参阅:http://www.json.org/js.html .
我是 KnockOut Framework 的粉丝,我会用它来做。

关于java - Springs MVC JSON 响应并将其转换为 JS 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13228203/

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