2

その後、 1.5 では発生しなかった問題1.7から速度エンジンにアップグレードします。1.5問題を説明するには、コード スニペットを表示する必要があります。

#foreach($someVariable in $someCollection)
 #foreach($anotherVariable in $someVariable.$anotherCollection)
   $anotherVariable.someAttribute ## This expression print in the browser as is
   ## but if I do this way
   $anotherVariable.get("someAttribute") ## works fine!
 #end
#end

これはアップグレード ( にある) の後に発生して1.7おり、アップグレードをロールバックする ( に戻る1.5) 場合は、上記のコード スニペットで言及した他の方法で行う必要はありません。

4

2 に答える 2

0

MyClass extends HashMap に以下を追加してみてください:

public Object get(オブジェクト キー) { return get((文字列)キー); }

Velocity が Map であることを認識し、ジェネリックを認識しないショートカットを試行しているため、間違った get() メソッドを呼び出しているのではないかと心配しています。しかし、私はこのマシンでこれを確認するように設定されていませんし、そうする時間もありません. ごめん。

于 2012-12-26T16:28:41.217 に答える
0

.java ファイルを確認することをお勧めします。

#foreach($someVariable in $someCollection)
    #foreach($anotherVariable in $someVariable.$anotherCollection)
        $anotherVariable.someAttribute 
        $anotherVariable.get("someAttribute") 
    #end
#end

someVariable がクラス X のオブジェクトであるとします。someVariable には、クラス X で anotherCollection を取得する public get() メソッドが必要です。同様に、anotherVariable がクラス Y のオブジェクトであるとします。anotherVariable には、クラス Y の someAttribute を取得する public get() メソッドが必要です。

これは、上記のように someAttribute にアクセスしようとしている両方の方法に適用されます。

于 2015-08-06T16:53:36.463 に答える