Java Japid:从HashMap获取密钥值时的奇怪行为
代码段的最后一行尝试获取键“MANUAL”的值,但它没有打印该值,如果我尝试将其转换为toString(如Java Japid:从HashMap获取密钥值时的奇怪行为,java,playframework-2.0,japid,Java,Playframework 2.0,Japid,代码段的最后一行尝试获取键“MANUAL”的值,但它没有打印该值,如果我尝试将其转换为toString(如${((Map)view.get(“升级分配类型映射”)).get(“MANUAL”).toString()}),它在运行时会给我空值。我不明白为什么会这样 当我打印每个键的长度时(在第一个冒号${{{u name}:${{{u name.length()}:${((Map)view.get(“upgrade\u assignment\u type\u Map”))。get({u name)
${((Map)view.get(“升级分配类型映射”)).get(“MANUAL”).toString()}
),它在运行时会给我空值。我不明白为什么会这样
当我打印每个键的长度时(在第一个冒号${{{u name}:${{{u name.length()}:${((Map)view.get(“upgrade\u assignment\u type\u Map”))。get({u name)}
):
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:::
注意:我正在java源代码内部创建映射,作为map nameToTypeMap=Maps.newHashMap()代码>我怀疑“手动”条目中的某个地方有无法打印的字符。按以下方式更改一条工作线:
AUTO_WITH_BALANCE_EMPHASIS: 29 : 2
AUTO_WITH_OFFENSIVE_EMPHASIS: 29 : 0
MANUAL: 10 : 3
AUTO_WITH_DEFENSIVE_EMPHASIS: 30 : 1
按键长度:
for(字符串名称:((映射)视图.get(“升级分配类型映射”)).keySet(){
${u name}:${u name.length()}
如果显示的是长度不是6的手册,这表明我是对的,您应该查看数据源,找出额外字符的来源
如果没有,我至少会尝试在HTML部分之外调试它。我没有使用Play框架,但可能会有一些代码填充此视图…如果您可以在那里插入调试器,可能会使诊断变得更容易
另一种可能是条目包含一个非ASCII字符,该字符看起来像ASCII字符,但实际上不是。如果查看HTML的源代码,您可能会看到它(甚至可能是不可打印的字符,具体取决于它的处理方式).Eclipse没有显示无效字符,而且这些字符串中有无效字符(可编译性惊人),因此当我在vim中打开特定文件时,它显示了我,我删除了这些无效字符。这就解决了我的问题。@gmuhammad:不要将所有这些都放在注释中。请编辑您的问题。(如果你真的在Java代码中这样做,那很奇怪。)我把has映射代码和长度输出放在我的问题中。但是你能解释一下为什么会这样吗?@gmuhammad:不,你没有-你做了一个没有真实内容的编辑。我建议你在Java代码中调试,检查原始字符串。我得到错误“body is missing”如果我试图讨论更多的代码,那么我就把它放在这里:nameToTypeMap.put(“AUTO_带有攻击性强调”,AUTO_带有攻击性强调,getType());nameToTypeMap.put(“AUTO_带有防御性强调,AUTO_带有防御性强调,getType());nameToTypeMap.put(“AUTO_带有平衡性强调”,AUTO_带有平衡性强调,AUTO_带有平衡性强调,getType());nameToTypeMap.put(“MANUAL”,MANUAL.getType());我调试了上面的散列映射,并且上面映射中每个键的长度与视图中的长度相同。因此,我想在从该映射获取数据时需要做一些特殊的事。我说的对吗?
AUTO_WITH_BALANCE_EMPHASIS: 29 : 2
AUTO_WITH_OFFENSIVE_EMPHASIS: 29 : 0
MANUAL: 10 : 3
AUTO_WITH_DEFENSIVE_EMPHASIS: 30 : 1
<p> KEY_LENGTHS:
for( String _name : ((Map<String, Integer>)view.get("upgrade_assignment_type_map")).keySet() ) {
<p> ${_name}: ${_name.length()}</p>
</p>