Struts 2避免重复操作

时间:2014-05-25 19:55:10

标签: java configuration struts2 annotations struts-validation

在struts 2应用程序中考虑以下示例。这是一个显示网格的页面,用户可以将SAME网格导出为PDF。

我们开发了一个包含两个动作的类,一个动作将网格作为JSON返回,另一个动作将SAME网格导出为PDF。

代码结构如下:

已定义了两个不同的动作地图/ShowGrid/ExportGrid

@Action (name="ShowGrid") // Result will be set to JSON
@validation ( @Required (..... // Validation Rules for fromDate toDate etc
public String showGrid(){
gird = serviceFacade.getGrid(fromDate,toDate);
return SUCCESS;
}


@Action (name="ExportGrid" ) //Result will be set as stream
@validation ( @Required ..... // Validation Rules for fromDate toDate etc
public String exportGrid(){
grid = serviceFacade.getGrid(fromDate,toDate);
inputStream = convertGridToStream(grid); // By using jasper report or other tools
return SUCCESS;
}

正如您所看到的,上述方法有许多共同的结构,

  • 验证是重复的(在我的用例中,验证规则很多)
  • 调用服务方法重复

有什么方法可以避免这种情况吗?!

1 个答案:

答案 0 :(得分:3)

您可以使用@Actions注释将多个操作映射到同一方法。在actions方法中,您可以从操作上下文中获取名称并定义逻辑。

@Actions({
  @Action ("ExportGrid"), //Result will be set as stream
  @Action ("ShowGrid") // Result will be set to JSON
})
@validation ( @Required ..... // Validation Rules for fromDate toDate etc
public String doGrid(){
  grid = serviceFacade.getGrid(fromDate,toDate);
  if (ActionContext.getContext().getName().equals("ExportGrid")
    inputStream = convertGridToStream(grid); // By using jasper report or other tools
  return SUCCESS;
}