私はSpring Framerworkに基づいてアプリケーションを開発しています。私はFreemarkerフレームワークと統合して使用するビュー技術として。仮想化のためのデータを格納するJava Beanが一部のフィールドでnullを持つと問題が発生します。 Freemarkerにはnull概念はないので、Beanにはこれらのフィールドがまったく存在しないと考えられます。私は、問題は、Java Beanからテンプレートで参照されるfreemarkerのハッシュオブジェクトにデータをコピーするクラスのカスタマイズによって解決できると思います。しかし、私はどのクラスが春にそれをするのか分かっていません。そのクラスはありますか?どのように呼び出されますか?Springフレームワークを使用したFreemarkerでのnullの表現
3
A
答えて
3
通常、テンプレートで直接nullを処理します。例:印刷されます
${person.surname!"n/a"}
「N /」だけヌル姓、またはの場合:nullの姓の場合、空の文字列(何もない)をプリントアウトします
${person.surname!}
。
1
"!"オペレーター。次に例を示します。
${your_property!""}
your_property
がnullの場合、それは「」空の文字列を出力します。
1
プロパティチェーン内のいずれかの部分がnullでもかまいませんが、nullのいずれかの部分を防ぐために、その周囲にパセンチを置くこともできます。例えば。あなたがpuの場合
${person.car.door.color!"<no value"}
あなたは色がヌルであることに注意してください。しかし、それはまた、ドア、車や全体の人が行方不明になっていることが起こりことができれば、あなたは私が追加する必要がある。このように
${(person.car.door.color)!"<no value"}
を配置する必要があります「!」すべてのフィールドの後に。 IMHOこれらの厄介な「式未定義」エラーから私を救うコードが1つあれば便利です。 – vect
本当に 'ヌル '(または不足)にすることができるフィールドの後に'! 'を置くだけで、すべてのフィールドの後には置かないでください。それ以外の場合は、誤植を隠すことができます。また、フィールドが「ヌル」の場合には、単に何も印刷しないことは通常適切ではないので、何をすべきかを明示的に伝える必要があります。 'N/A'または' -'を表示するか、フィールドが0(計算中)であると仮定するか、フィールドラベルの印刷をスキップします。 – ddekany
ほとんどの場合、何も持たないでください文字列)をFreemarkerのそのようなフィールドに入力します。私はそれを何か他の何かに置き換える必要がある場合私はfreemarkerテンプレートのhas_contentでフィールドをチェックし、そこに適切な値を置きます。 freemarkerのそのようなフィールドに長さゼロの文字列を入れたくない場合は、Java Beanの対応するフィールドにいくつかのカスタム注釈(@Nullableなど)を付けて、この注釈をチェックします。フリーメーカのハッシュ。 – vect