java - Japid:从 HashMap 获取键值时的奇怪行为

标签 java playframework-2.0 japid

<p> THAT'S OK: ${((Map<String,Integer>)view.get("upgrade_assignment_type_map")).toString()} </p>

<p> THAT'S ALSO OK:
for( String _name : ((Map<String, Integer>)view.get("upgrade_assignment_type_map")).keySet() ) {
<p> ${_name}: ${((Map<String, Integer>)view.get("upgrade_assignment_type_map")).get(_name)} </p>
}
</p>
<br><br>
<p> SADLY THAT'S NOT OK::: ${((Map<String, Integer>)view.get("upgrade_assignment_type_map")).get("MANUAL")} </p>

上面的代码段打印以下输出,这让我感到惊讶:

THAT'S OK: {AUTO_WITH_BALANCE_EMPHASIS=2, AUTO_WITH_OFFENSIVE_EMPHASIS=0, MANUAL=3, AUTO_WITH_DEFENSIVE_EMPHASIS=1}

THAT'S ALSO OK:

AUTO_WITH_BALANCE_EMPHASIS: 2

AUTO_WITH_OFFENSIVE_EMPHASIS: 0

MANUAL: 3

AUTO_WITH_DEFENSIVE_EMPHASIS: 1



SADLY THAT'S NOT OK:::

代码段的最后一行尝试获取键“MANUAL”的值,但它不会打印该值,如果我尝试将其转换为 toString (如 ${((Map<String, Integer>)view.get("upgrade_assignment_type_map")).get("MANUAL").toString()} ),它会在运行时给我 null 。我不明白为什么会这样?

当我打印我得到的每个键的长度(在第一个冒号 <p> ${_name}: ${_name.length()} : ${((Map<String, Integer>)view.get("upgrade_assignment_type_map")).get(_name)} </p> 之后)时:

AUTO_WITH_BALANCE_EMPHASIS: 29 : 2

AUTO_WITH_OFFENSIVE_EMPHASIS: 29 : 0

MANUAL: 10 : 3

AUTO_WITH_DEFENSIVE_EMPHASIS: 30 : 1

注意:我正在 java 源代码中创建 map Map<String, Integer> nameToTypeMap = Maps.newHashMap();

最佳答案

我怀疑“MANUAL”条目中的某处有不可打印的字符。像这样更改您的工作线之一:

<p> KEY_LENGTHS:
for( String _name : ((Map<String, Integer>)view.get("upgrade_assignment_type_map")).keySet() ) {
<p> ${_name}: ${_name.length()}</p>
</p>

如果显示 MANUAL 的长度不是 6,则表明我是对的,您应该查看数据源以找出额外字符的来源。

如果没有,我至少会尝试在 HTML 部分之外调试这个。我没有使用过 Play 框架,但想必一定有一些代码填充了这个 View ...如果您可以进入其中的调试器,则可能会使其更容易诊断。

另一种可能性是该条目包含一个非 ASCII 字符,它看起来像 ASCII 字符,但实际上不是。如果您查看 HTML 的源代码,您可能会看到这一点(可能甚至是不可打印的字符,具体取决于它的处理方式)。

关于java - Japid:从 HashMap 获取键值时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13023535/

相关文章:

java - 杰皮德配置?

java - Japid 中 @Html 的替代品

java - play japid 为什么不能使用可变参数

java - 如何通过排序方法组织字符串?

java - 条纹, Spring ,游戏(或?) : which high performance Java framework to use?

security - 关于 cookie 和 session 的 Play 框架安全问题

java - 如何在 Play 框架的索引页面上加载示例 html 页面?

scala - Scala 中的事务方法 Play with Slick(可能类似于 Spring @Transactional?)

java - Java中如何将ArrayList数据类型插入MySQL数据库

java - ArrayList<E>.clear() 的用处?