0
<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<String, Integer> nameToTypeMap = Maps.newHashMap();

4

2 に答える 2

1

「MANUAL」エントリのどこかに印刷できない文字があると思われます。作業行の 1 つを次のように変更します。

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

6 以外の長さの MANUAL が表示された場合、それは私の考えが正しいことを示しています。余分な文字がどこから来ているのかを調べるには、データ ソースを調べる必要があります。

そうでない場合は、少なくともHTML 部分の外でこれをデバッグしようとします。私は Play フレームワークを使用していませんが、おそらくこのビューに何らかのコードが入力されているはずです...そこでデバッガーに侵入できれば、診断がはるかに簡単になるでしょう。

別の可能性として、ASCII 文字のように見えて実際にはそうではない非 ASCII 文字がエントリに含まれている可能性があります。HTML のソースを見ると、それを確認できる場合があります (処理方法によっては、印刷できない文字も表示される可能性があります)。

于 2012-10-23T05:52:17.603 に答える
0

Eclipse では無効な文字が表示されず、これらの文字列に無効な文字 (驚くほどコンパイル可能) があったため、その特定のファイルを vim で開くと表示され、それらの無効な文字を削除しました。それは私の問題を解決します。

于 2012-10-24T05:22:56.303 に答える