2013-09-26 29 views
0

我正在寻找一些与spring相关的其他ajax技术。与portlet相比,spring的mvc与iframes相比?

主要问题是html页面的一部分重复了很多次,并迫使大部分页面不断渲染,例如一对多关系部件。 每次在新控制器中调用相同的对象都很无聊。

也编写自定​​义嵌套的jsp标记只给我一些html页面查看代码减少但需要很长时间的开发,也在控制器层我不得不再次调用对象,并重用它们,造成沉重的不必要的负载,也迫使重构涉及控制器。 所以我需要一些像绑定控制器到页面的一部分的东西。 可以在任何其他jsp页面中重用。我知道我可以在ajax中做到这一点,但它给了我许多复杂和巨大的js代码。所以问题是:

春天mvc + iframe是否有生产力? Spring是否可以管理Iframes的安全会话? 它可以替代portlet吗?

回答

1

考虑选择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,并且您可以为可重用视图组件执行业务操作。

当然,这种方法的缺点是,如果你有多个小部件,但只有一些(不是全部)出现在页面上,CommonControllerCommonController装饰的每个方法仍然运行。

如果这不合乎要求,也许可以通过在构造函数中设置一些标志来改进这种模式,以便超类知道应该(不)运行哪个小部件增强方法。

+0

好点,就像服务器端的魅力一样。 –