Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Japid:从HashMap获取密钥值时的奇怪行为_Java_Playframework 2.0_Japid - Fatal编程技术网

Java Japid:从HashMap获取密钥值时的奇怪行为

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)

代码段的最后一行尝试获取键“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)}

):

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>