Java 百里香地图<;字符串,对象>;映射键中的迭代和非英语字符

Java 百里香地图<;字符串,对象>;映射键中的迭代和非英语字符,java,spring,thymeleaf,Java,Spring,Thymeleaf,我有Spring,Thymeleaf,HTML5网页。若Map对象包含非英语字符,则在遍历Map时会遇到问题 所有字符编码过滤器/解析器/转换器都已设置并强制为UTF-8 假设我有以下设置: 控制器: @RequestMapping(value = "/app", method = { RequestMethod.GET, RequestMethod.POST }) public String view(ModelMap model, @RequestParam(value = "foo",

我有Spring,Thymeleaf,HTML5网页。若Map对象包含非英语字符,则在遍历Map时会遇到问题

  • 所有字符编码过滤器/解析器/转换器都已设置并强制为UTF-8
  • 假设我有以下设置:

    控制器:

    @RequestMapping(value = "/app", method =  { RequestMethod.GET, RequestMethod.POST })
    public String view(ModelMap model, @RequestParam(value = "foo", required = false) Integer foo) {
       MapDTO mapDto = new MapDTO();
       Map<String, List<Foo>> mapFoo ... // populate map etc.
       model.add("mapDto", mapDto.setMapFoo(mapFoo))
       return foo == null ? VIEW : VIEW + " :: fooFragment"
    }
    
    @RequestMapping(value=“/app”,method={RequestMethod.GET,RequestMethod.POST})
    公共字符串视图(ModelMap模型@RequestParam(value=“foo”,required=false)整数foo){
    MapDTO MapDTO=新的MapDTO();
    Map mapFoo…//填充Map等。
    model.add(“mapDto”,mapDto.setMapFoo(mapFoo))
    返回foo==null?视图:视图+“::fooFragment”
    }
    
    以及用于测试目的的模板:

    .. page ..
    <div th:fragment="fooFragment" id="fooFragment">
      ..
      <th:block th:each="fooMap : ${mapDto.mapFoo}">
        <th:block th:each="item,row : ${fooMap.value.fooList}">
          <p th:text="${item.val}"</p> <!-- working OK -->
          <p th:text=" ${fooMap.value.fooList[__${row.index}__].idrValueName} "></p> <!-- working OK -->
          <input th:field="*{mapDto.mapFoo[__${fooMap.key}__].fooList[__${row.index}__].val} "></p><!-- And this is working -->
          <p th:text="${mapDto.mapFoo[__${fooMap.key}__].fooList[__${row.index}__].val} "></p><!-- FAILING ON THIS -->
        </th:block>
      </th:block>
      ..
    </div>
    .. rest of the page ..
    
    。。页
    ..
    
    mapDto.mapFoo[Ā].傻瓜[0].val

    此表达式包含重音字符
    Ā
    。查看的源代码,重音字符清楚地表示为标记化的无效候选者


    负责解析表达式的Spring EL与这个
    标记器紧密耦合,因此我认为没有现成的方法来允许重音字符的标记化。我很确定这是不允许的(例如,它可能会破坏框架的其他部分),所以我建议您按照框架的要求,删除表达式中的重音字符。

    mapDto.mapFoo[Ā]。傻瓜[0]。val

    此表达式包含重音字符
    Ā
    。查看的源代码,重音字符清楚地表示为标记化的无效候选者


    负责解析表达式的Spring EL与这个
    标记器紧密耦合,因此我认为没有现成的方法来允许重音字符的标记化。我很确定这是不允许的(例如,它可能会破坏框架的其他部分),因此我建议您按照框架的要求,删除表达式中的重音字符。

    而不是[solved]回答您的问题-。而不是[solved]回答您的问题-。