Этот ответ просто подтверждает, что ответ от axtavt работает. Мне потребовалась минута, чтобы понять, что он предлагает, поэтому я решил опубликовать фрагмент кода, чтобы помочь любому, кто придет за мной. Престижность идти к нему, хотя! :)
MyController.java
@Controller
public class MyController {
@RequestMapping( method=RequestMethod.GET, value="/mainView" )
public ModelAndView getMainView( ... ) {
/* do all your normal stuff here to build your primary NON-ajax view
* in the same way you always do
*/
}
/* this is the conroller's part of the magic; I'm just using a simple GET but you
* could just as easily do a POST here, obviously
*/
@RequestMapping( method=RequestMethod.GET, value="/subView" )
public ModelAndView getSubView( Model model ) {
model.addAttribute( "user", "Joe Dirt" );
model.addAttribute( "time", new Date() );
return new ModelAndView( "subView" );
}
}
1010 *
*
mainView.jsp
(...)
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
function doAjaxPost() {
$.ajax({
type: "GET",
url: "subView",
success: function(response) {
$("#subViewDiv").html( response );
}
});
}
</script>
<input type="button" value="GO!" onclick="doAjaxPost();" />
<div id="subViewDiv"></div>
(...)
subView.jsp
(...)
<h3>
User Access Details
</h3>
<p>
${user} accessed the system on ${time}
</p>
(...)
1024 *
*
И это все! Вещь красоты; до сих пор делать AJAX весной было огромной болью ... парсинг большого @ ResponseBody's, создание огромных наборов HTML путем объединения вещей в JS ... тьфу ... я не могу поверить, насколько простой и удивительный этот подход - и не знал об этом до сих пор! :)