ajax とサーバー側の操作を選択する際の考慮事項は、単に開発時間に基づくのではなく、ユーザー エクスペリエンス、セキュリティなどを考慮に入れる必要があります。一部の操作はサーバー側で行うのが適切ですが、他の操作はクライアント側/ ajaxで行います。Spring と Jackson JSON プロセッサを組み合わせると、ajax を開発するときに大いに役立ちます。POJOを直接マップし、最小限のコードでハンドラを介して返すことができます。
クライアント側のアイテムをページの他のコンポーネントと統合するのが難しいため、iframe は使用しません。
異なるコントローラーで重複するコードを持つことに関して、私にとってうまくいったアプローチの 1 つは、一般的なスーパークラス コントローラーのアプローチです。
再利用可能な共有コードを含むスーパークラス コントローラーを作成する (例: ウィジェット モデルを強化するため)
public class CommonController {
@ModelAttribute
public void enrichWidgetA(Model model) {
model.addAttribute("widgetAMsg", "hello world");
}
}
他のコントローラー クラスで CommonController を拡張する
@Controller
public class HomeController extends CommonController {
@RequestMapping("/home")
public String home() {
// do your stuff here
return "home";
}
}
JSP ビューでは、JSP タグを利用して DRY (Donot Repeat Yourself) に保つことができます。enrichWidgetA
ハンドラーメソッドより先に呼び出さhome()
れ、再利用ビューコンポーネントの業務操作が可能になります。
もちろん、このアプローチの欠点は、複数のウィジェットがあり、一部 (すべてではない) しかページに表示されない場合、CommonController
装飾されたすべてのメソッド@ModelAttribute
がとにかく実行されることです。
これが望ましくない場合は、コンストラクターでいくつかのフラグを設定して、このパターンを改善して、スーパークラスがどのウィジェット エンリッチメント メソッドを実行する必要があるか (実行しないか) を認識できるようにすることができます。