2 つの部分ビュー (たとえば、「subFoo1」および「subFoo2」と呼ばれる) をロードするための 2 つの < c:import ...> タグを持つ jsp ビュー (たとえば、「foo」と呼ばれる) を作成しました。それが行われる方法は、コントローラーに3つのメソッドがあり、ビューfooControllerごとに1つです-foo、sub1Controller> subFoo1、sub2Controller> subFoo2
ModelAndView (foo.jsp) を返す fooController に移動するボタンをクリックすると、他の 2 つの部分ビューが < c:import ...> タグによって読み込まれ、100% 正常に動作します。
問題は、別のコントローラーから fooController を呼び出すと (ブラウザーからの要求ではなく、たとえば、何かを db に保存した別のコントローラーから)、foo.jsp は正常にロードされますが、subFoo1 と subFoo2 はロードされることです。まったく読み込まない。
デバッグは、正しいパラメータが fooController と foo.jsp に渡され、sub1Controller と sub2Controller の両方が呼び出されないことを示しています。
これにより、ブラウザーからのリクエストではなく、別のコントローラーからコントローラーを呼び出すことによって foo.jsp がレンダリングされるときに、 < c:import ... > タグが URL を呼び出していないと思われます。
前に言ったように、ブラウザから fooController へのリクエストが行われたときは 100% 機能しますが、別のコントローラーから fooController を呼び出したときは機能しません。
色々と探してみたのですが、これに似たものはなかなか見つかりません。私が理解しているように、 < c:import ... > は URL からの HTML 応答を飲み込み、それが存在するページに埋め込みます。foo.jsp のリクエスト方法に違いが生じる理由が理解できません。私に関する限り、 < c:import ...> タグには影響しないはずです (私が言っているのは間違っていますか?)