【问题标题】:Can a method marked with the @ModelAttribute annotation access the form data?标有@ModelAttribute 注解的方法可以访问表单数据吗?
【发布时间】:2018-05-11 04:25:36
【问题描述】:

我试图让 Spring 根据表单中的某个字段实例化特定的对象类型,但我不知道该怎么做。我可以通过如下解析 URL 来正确地做到这一点:

@ModelAttribute("order")
public Order getOrderTypeFromUrl(final HttpServletRequest request)
{
    String url = request.getRequestURI();
    String type = url.substring(url.lastIndexOf("-") + 1, url.length());
    switch (type)
    {
        case "PRNOrder" : return new PRNOrder();
        case "Frequency Scheduled Order" : return new FrequencyScheduledOrder();
    }
    return null;
}

但是,我希望将我的 URL 更改为不再包含用户正在添加的订单类型。我希望此方法能够访问表单中提交给控制器时的字段,但我不确定要向我的方法添加什么参数来实现这一点。请求对象的参数和属性不包含表单数据。

谢谢

【问题讨论】:

    标签: java spring forms methods modelattribute


    【解决方案1】:

    事实证明,只要您在包含订单类型的隐藏文本字段中设置了 ID 和名称,就可以正常工作!!!! (今天该停止编码了!):

    @ModelAttribute("order")
    public Order getOrderTypeFromRequest(final HttpServletRequest request, final Model model)
    {
        try
        {
            String orderType = request.getParameter("type");
            switch (orderType)
            {
                case "PRNOrder" : return new PRNOrder();
                case "frequencyScheduledOrder" : return new FrequencyScheduledOrder();
            }
        }
        catch (Exception ex)
        {
            return null;
        }
        return null;
    }
    

    【讨论】:

      猜你喜欢
      • 2018-12-12
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      • 2016-09-25
      • 2010-10-28
      • 1970-01-01
      • 2017-01-01
      • 2017-12-20
      相关资源
      最近更新 更多