标有@ModelAttribute 注解的方法可以访问表单数据吗?
Can a method marked with the @ModelAttribute annotation access the form data?
我正在尝试让 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 以不再包含用户添加的订单类型。我希望此方法能够访问提交给控制器时表单中的字段,但我不确定要向我的方法添加什么参数来实现此目的。请求对象的参数和属性不包含表单数据。
谢谢
事实证明,只要您为包含订单类型的隐藏文本字段设置 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;
}
我正在尝试让 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 以不再包含用户添加的订单类型。我希望此方法能够访问提交给控制器时表单中的字段,但我不确定要向我的方法添加什么参数来实现此目的。请求对象的参数和属性不包含表单数据。
谢谢
事实证明,只要您为包含订单类型的隐藏文本字段设置 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;
}