Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 与portlet相比,使用iFrame的spring mvc?_Ajax_Spring_Iframe_Spring Security - Fatal编程技术网

Ajax 与portlet相比,使用iFrame的spring mvc?

Ajax 与portlet相比,使用iFrame的spring mvc?,ajax,spring,iframe,spring-security,Ajax,Spring,Iframe,Spring Security,我正在搜索其他一些与spring相关的ajax技术 主要的问题是html页面的一部分已经重复了很多次,并且迫使页面的大部分连续呈现,例如一对多关系部分。 每次在新控制器中调用相同的对象都很无聊 另外,编写自定义嵌套jsp标记只会让我减少一些html页面视图代码,但需要花很长时间来开发,而且在控制器层,我必须再次调用对象并重用它们,这会造成不必要的沉重负载,还迫使重构涉及的控制器。 所以我需要一些东西,比如将控制器绑定到页面的一部分。 我知道我可以在ajax中做到这一点,但它给了我许多复杂而庞大的

我正在搜索其他一些与spring相关的ajax技术

主要的问题是html页面的一部分已经重复了很多次,并且迫使页面的大部分连续呈现,例如一对多关系部分。 每次在新控制器中调用相同的对象都很无聊

另外,编写自定义嵌套jsp标记只会让我减少一些html页面视图代码,但需要花很长时间来开发,而且在控制器层,我必须再次调用对象并重用它们,这会造成不必要的沉重负载,还迫使重构涉及的控制器。 所以我需要一些东西,比如将控制器绑定到页面的一部分。 我知道我可以在ajax中做到这一点,但它给了我许多复杂而庞大的js代码。所以问题是:

spring mvc+iframes是否高效? spring是否可以使用iFrame管理安全会话?
它可以替代portlet吗?

选择ajax还是服务器端操作应该考虑用户体验、安全性等因素,而不仅仅是基于开发时间。有些操作更适合在服务器端完成,而另一些操作则更适合在客户端/ajax上完成。请记住,在开发ajax时,POJO有很大帮助,POJO可以直接映射并通过处理程序返回,只需很少的代码

我不会使用iframe,因为很难将客户端项目与页面的其他组件集成在一起

关于在不同控制器上具有重复代码,一种对我有效的方法是通用超类控制器方法:

创建包含共享可重用代码的超类控制器(例如:丰富小部件模型)

在其他控制器类上扩展CommonController

@Controller
public class HomeController extends CommonController {
  @RequestMapping("/home")
  public String home() {
    // do your stuff here
    return "home";
  }
}
在JSP视图上,您可以(不要重复自己)
enrichWidgetA
将在
home()
处理程序方法之前调用,您可以对可重用视图组件执行业务操作

当然,这种方法的缺点是,如果您有多个小部件,但页面上只显示了一些(而不是全部),那么
CommonController
上装饰有
@modeldattribute
的每个方法仍然运行

如果不希望这样做,您可以通过在构造函数中设置一些标志来改进此模式,以便超类知道应该(不)运行哪个小部件扩展方法

@Controller
public class HomeController extends CommonController {
  @RequestMapping("/home")
  public String home() {
    // do your stuff here
    return "home";
  }
}