1

ペアの読み取りに少し問題があります。

だから私は自分のペアを作成しています

private Pair<Integer, Integer> count(somethink) {
    int c1 = 2;
    int c2 = 4;
    return new Pair<Integer, Integer>(c1, c2);

}

そして、それをJava経由でftlに「送信」します

mv.addObject("counted", count(somethink));

私の問題には本当に関係ないと思うので、送信方法をすべて書くことはしません。だから私は「ftl」でそれを受け取っています。それから私はそれを「読もう」としていました。

<#list counted?keys as key> 
    <a href="#offerOrderTab"><@spring.message "someMsg"/>(${key}/${counted[key]})</a>
</#list> 

その後、エラーが発生します

Expecting a string, date or number here, Expression x is instead a freemarker.ext.beans.SimpleMethodModel

ペアを反復しないと思います(または間違っていますか?)1つのキーと1つの値のみを含むペアを知っていますが、それでもそのように送信する必要があり、反復するのと似ていると思いましたmap、Java では、pair.first() と pair.second() を使用しますが、ftl では機能しません (はい、機能しないことはわかっています)。私も使用して文字列にキャストしようとしました?stringが、うまくいきませんでした

4

2 に答える 2

2

やってみました?

${counted.first()?xml}/${counted.second()?xml} 

Java コードで動作すると仮定pair.first()します。second()

于 2013-11-07T17:25:02.417 に答える
0

の API がどのようにPair見えるかはわかりませんが、?keysおそらく不本意ながらそのメソッドをリストします。したがって、エラーメッセージ; 戻り値ではなく、メソッド自体を出力しようとします。(壊れたエラー メッセージの時点では、xそこには存在しないため、FreeMarker の更新が役立ちます。) Caleryn が言うように、2 つのメソッドを呼び出すだけです。このことをリストする必要がある場合は、または を実装していない限り(または単に) またはList配列に配置する必要がある可能性があります。または、これがプロジェクトでより大きな問題である場合、FreeMarker にはプラグイン可能な構成コンポーネント があり、それを使用して FreeMarker に-s をリストとして扱うように指示できます。ただし、FreeMarker についてより深く理解する必要があります。PairListCollectionIterableObjectWrapperPair

于 2013-11-07T21:51:14.527 に答える