Spring 4.X:无法将请求bean映射到Controller中的POJO

时间:2014-02-21 08:20:22

标签: java spring spring-mvc request

编辑:也许我需要更清楚这个应用程序是如何工作的。我这里没有表格。我使用HTML导航API捕获页面响应和加载时间,然后向我的应用程序发送'GET'请求,如下所示:

window.onload=function(){
    setTimeout(function(){
        var page = window.location.pathname;
        var xmlhttp = new XMLHttpRequest();
        var pt = performance.timing;

                ...SNIP....
        var load  = pt.loadEventEnd - pt.loadEventStart;
        var redc = window.performance.navigation.redirectCount;

        xmlhttp.open("GET", "http://localhost:8080/wp/timing?app=test&page="+page
                      +"&str="+str
                      +"&tot="+tot
                      +"&red="+red
                      +"&cache="+cache
                      +"&dns="+dns
                      +"&conn="+conn
                      +"&req="+req
                      +"&res="+res
                      +"&dom="+dom
                      +"&load="+load
                      +"&redc="+redc
                      , true);
        xmlhttp.send(null);
    }, 0);
};

这是我的控制器(如下所示)出现的地方。现在,这里的请求参数之一是以毫秒为单位的时间。 Spring自动将与请求参数同名的原始数据类型映射到bean中的适当字段。但是,当我使用“日期”时,这会失败。

=============================================== =======================================

我正在处理这个应用程序,我在控制器和控制器内部收到一定数量的请求参数,我传入一个自定义bean作为参数。现在,我能够使用POJO成功映射应用程序请求参数(与bean中的名称相同)。 但是,现在我在我的bean中添加了一个Date类型,我希望相应的请求参数自动转换为'Date'。但是,当我在POJO中添加日期字段时,控制器不会被调用。

以下是我的代码中的代码段:

控制器:

@Controller
public class Timing {

    @Autowired
    private PageService pageService;

    @RequestMapping(value="/timing", method = RequestMethod.GET)
    @ResponseBody
    public void insert(Page page) throws UnknownHostException {
        page.setTs(new Date());
        pageService.updatePage(page);
    }

我也尝试过添加自定义编辑器:

@InitBinder
     public void initBinder(WebDataBinder binder,HttpServletRequest request) {
                     SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yy");
                     dateFormat.setLenient(false);
                     binder.registerCustomEditor(Date.class, new CustomDateEditor(
                                                     dateFormat, true));
     }

这是我的豆子:

@Document
public class Page {

    @Id
    private String id;
    private Date ts;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    ....SNIP....

    public Date getTs() {
        return ts;
    }

    public void setTs(Date ts) {
        this.ts = ts;
    }

任何指针都将不胜感激。我;正在使用Spring 4.x。

1 个答案:

答案 0 :(得分:0)

您可以使用@ModelAttribute或@RequestBody注释。

请参阅此Using @ModelAttribute on method argument

Existing stackoverflow question on @ModelAttribute