質問

Velocity マクロのリストに要素を追加したいと考えています。これは、Velocity 出力に「本当の」テキストが表示されるのを避ける唯一の方法ですか?

#set($path = [])
#set($swallow = "a")

#set ($swallow = $path.add("blaablaa"))
役に立ちましたか?

解決

私はテレンス・パー(の父)の意見に同意せざるを得ません。 文字列テンプレート) に関連するコメントがある人 アルティマのインタビュー そして モデルとビューの分離に関する優れた論文.

テンプレートは純粋なプレゼンテーションに限定する必要があります。モデルにプレゼンテーション層の詳細を含めるべきではないのと同様に、テンプレートにデータ操作を含めるべきではありません。どちらかを行うと、通常、メンテナンスがより困難になり、さらにはそれを知ることが難しくなります。 どこ メンテナンスをすること。

Velocity と StringTemplate の両方に関する私自身の経験に基づいて、質問の問題 (テンプレートをより複雑にするデータ操作のアーティファクト) をヒントとして取り、データ構造のすべての操作を Java レイヤーに移動することを強くお勧めします。

他のヒント

あなたはそれを黙らせたい場合は、

うん、その後の#setはあなたの友達です。多くの人々は、このようなマクロでこれをショートカットます:

#macro( call $this )#set( $stfu = $this )#end

そして、あなたに短縮することができます。

#call( $path.add('blaablaa') )
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top