考虑选择ajax还是服务器端操作应考虑用户体验,安全性等因素 - 而不仅仅是基于开发时间。一些操作更适合在服务器端完成,而另一些则在客户端/ ajax上完成。请记住combining Spring with Jackson JSON processor在开发ajax时有很多帮助,POJO可以直接映射并通过处理程序以最小代码返回。
我不会走的iframe,因为与页面
的其他组件至于客户端项目整合到具有不同控制器上的重复代码的难度,一种方法已经为我工作是一种常见的超控制器的方法:
创建包含共享可重用代码类的超类的控制器(例如:以丰富插件模型)
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视图上,您可以utilize JSP tag to keep it DRY(Donot Repeat Yourself)。将在home()
处理程序方法之前调用enrichWidgetA
,并且您可以为可重用视图组件执行业务操作。
当然,这种方法的缺点是,如果你有多个小部件,但只有一些(不是全部)出现在页面上,CommonController
上CommonController
装饰的每个方法仍然运行。
如果这不合乎要求,也许可以通过在构造函数中设置一些标志来改进这种模式,以便超类知道应该(不)运行哪个小部件增强方法。
好点,就像服务器端的魅力一样。 –