0

春に関連する他の ajax 技術を探しています。

主な問題は、HTML ページの一部が何度も繰り返され、ページの大部分が継続的にレンダリングされることです。新しいコントローラーで毎回同じオブジェクトを呼び出すのは退屈です。

また、カスタムのネストされたjspタグを作成すると、いくつかのhtmlページのビューコードが削減されますが、開発に時間がかかります。コントローラーレイヤーでも、オブジェクトを再度呼び出して再利用する必要があり、不要な負荷が大きくなり、関与するコントローラーのリファクタリングも強制されます。そのため、コントローラーをページの一部にバインドするようなものが必要です。他のjspページで再利用可能です.ajaxでこれを実行できることはわかっていますが、多くの複雑で巨大なjsコードが得られます. 質問は次のとおりです。

spring mvc + iframes は生産的ですか? 春はIframesでセキュリティセッションを管理できますか? ポートレットの代わりになりませんか?

4

1 に答える 1

1

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がとにかく実行されることです。

これが望ましくない場合は、コンストラクターでいくつかのフラグを設定して、このパターンを改善して、スーパークラスがどのウィジェット エンリッチメント メソッドを実行する必要があるか (実行しないか) を認識できるようにすることができます。

于 2013-09-26T23:13:25.330 に答える