首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring MVC绑定

Spring MVC绑定
EN

Stack Overflow用户
提问于 2011-06-30 02:52:47
回答 1查看 701关注 0票数 1

我不确定这是否可能,但我需要用Spring MVC做一些奇怪的绑定。我们必须动态生成一个页面,它是运行某些报告的前兆。不同的报告将有不同的标准,这些标准可用来限制报告上显示的数据。

我希望我能做这样的事情:

代码语言:javascript
复制
public interface ReportingStrategy extends Serializable {
    public String getReportingCriteria(); //Each subclass will generate the SQL needed
}

public class DateLimitingStrategy implements ReportingStrategy {

    private Date startDate;
    public Date getStartDate() { return startDate; }
    public void setStartDate(Date startDate) { this.startDate = startDate; }

    private Date endDate;
    public Date getEndDate() { return endDate; }
    public void setEndDate(Date endDate) { this.endDate = endDate; }

    public String getReportingCriteria() {
        //Generate SQL for date range (where necessary)
    }
}

public class SortingStrategy impelements ReportingStrategy {
    public String sortValue;
    public String getSortValue() { return this.sortValue; }
    public void setSortValue(String sortValue) { this.sortValue = sortValue; }
}

因此,这似乎是一个非常简单的想法。

在我的控制器端,我希望能够绑定到一个帖子上的列表。我可以生成HTML,这应该是必要的,但是绑定不能正常工作。这是我的控制器的基础:

代码语言:javascript
复制
@RequestMapping(method = RequestMethod.GET) 
public ModelAndView(@RequestParam("reportName") String reportName) {
    ModelAndView mav = new ModelAndView("showReportingStrategies");
    mav.addObject("backingObject", new BackingObject(reportName));
    return mav;
}

@RequestMapping(method = RequestMethod.POST)
public ModelAndView(@ModelAttribute("backingObject") BackingObject bo, BindingResult result) {
    //More logic here   
}

public class BackingObject implements Serializable {
    private List<ReportingStrategy> reportingStrategies;
    public void setReportingStratgies(List<ReportingStrategy> reportingStrategies) {
        this.reportingStrategies = reportingStrategies;
    }
    public List<ReportingStrategy> getReportingStrategies() { return this.reportingStrategies; }
}

这是不是可以通过扩展PropertyEditorSupport和InitBinder魔术来实现呢?

EN

回答 1

Stack Overflow用户

发布于 2011-06-30 04:01:21

最简单的方法就是使用@SessionAttributes将你的支持对象放到会话中。这样,具体的类型就会在绑定时出现。绑定器不需要能够确定要使用哪个ReportingStrategy实现器,它们已经在那里了。当然,服务器端的状态对你来说可能是一个问题,如果你使用的是没有webflow的原始MVC,并且你的应用程序支持多选项卡使用,你需要一如既往地处理它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6525716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档