【问题标题】:Sending a Jackson converted string or JSON object to HTML page using thyemeleaf使用 thymeleaf 将 Jackson 转换字符串或 JSON 对象发送到 HTML 页面
【发布时间】:2021-12-08 09:30:21
【问题描述】:

我正在尝试使用 thymeleaf 将 JSON 对象发送到 javascript 中的属性,但是当收到值时,所有引号都转换为 "。

在我的 POJO 中,我有以下方法:

public class MyObject {

   public String toJSON() throws IOException {
        StringWriter result = new StringWriter();
        if (this.getCaseRegistrations().size() > 0) {
            ObjectMapper mapper = new ObjectMapper();
            mapper.writeValue(result, this.caseRegistrations);
        }
        return result.toString();
    }

在其他地方,该类已创建并准备好使用并发送到 Spring 控制器中的 ModelAndView: mav.addObject("myObject", myObject);

在我的 html 页面中,我有以下内容:

<script type="text/javascript">
  $(document).ready(function() {
       let registrations = [[ ${myObject.toJSON()} ]]
       console.log(registrations);
  });

不幸的是,当它运行时,javascript 在分配上失败并抱怨&amp;。查看源代码,我看到以下内容: let registrations = [{&amp;quot;prop1&amp;quot;:&amp;quot;val1&amp;quot;, ...}];

当我在 java 端(在调试模式下)查看字符串时,值看起来是正确的 [{ "prop1": "val1", ...}]

我尝试了各种方法,例如let registrations = '[[ ${myObject.toJSON()} ]]'(在此处使用反引号)并让registrations = decudeURI[[ ${myObject.toJSON()} ]])[# th:utext="${myObject.toJSON()}"/];。最后一次尝试(使用 th:utext)完全失败了。

将 POJO 转换为 JSON 并将其分配给 html 页面上 javascript 中的变量的正确方法是什么? (Java-Spring-Thymeleaf)

【问题讨论】:

  • 你为什么使用自定义方法而不仅仅是let registrations = [[ ${myObject} ]](在你的脚本标签上有th:inline="javascript")? Thymeleaf 将自动序列化为 json,无需任何辅助方法。看到这个:thymeleaf.org/doc/tutorials/3.0/…
  • 当我这样做时,我得到了对象的内存位置,而不是实际数据。我想我本来可以更清楚的。 MyObject 类具有其他自定义类的对象作为属性。因此,使用 [[]] 的输出是 Prop1@32BA5CD、Prop2@88CA65B 等。
  • 您确定并像文档一样将th:inline="javascript" 添加到您的脚本标签中吗?
  • 我认为这可能是我的解决方案。 th:inline="javascript"type="text/javascriptlanguage="javascript" 之间存在差异。

标签: javascript java json jackson thymeleaf


【解决方案1】:

我在这项技术方面没有太多经验,但我可以帮助你给出这样的场景

  1. 在发送到 js 之前捕获 json 数据。
  2. 然后使用strrplace() 之类的东西,如果您知道其他函数 [http://w3schools.com/php/func_string_str_replace.asp],请看这里它将替换所有括号。请参阅第一个参数将是您要替换的内容,第二个参数将是您要替换的内容。

在我的情况下,

$user=str_replace("'[',']','{','}'",(my json variable data));

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 2016-07-19
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    相关资源
    最近更新 更多