gpt4 book ai didi

java - Spring不支持请求方法 'POST'

转载 作者:行者123 更新时间:2023-11-30 03:48:16 26 4
gpt4 key购买 nike

这是我的 Controller :

@Controller
public class UserController {

@Autowired
UserService userService;

@Autowired
SaveBatchService saveBatchService;

@Autowired
MassSMSFormValidator massSMSFormValidator;

@Autowired
SingleSMSFormValidator singleSMSFormValidator;

@RequestMapping("/userRole/sms/mass")
public String massSMSPage(Map<String, Object> map,
@ModelAttribute("massSMSForm") MassSMSForm massSMSForm) {

map.put("title", "Массовая рассылка");

return "massSMS";
}

@RequestMapping(value="/userRole/sms/mass" ,method = RequestMethod.POST)
public String massSMSProcess(Map<String, Object> map,
@ModelAttribute("massSMSForm") MassSMSForm massSMSForm,
BindingResult result) throws IOException {
InputStream inputStream = null;
MultipartFile file = massSMSForm.getFile();
massSMSFormValidator.validate(massSMSForm, result);

if (result.hasErrors()) {
map.put("errorFlag", true);
return massSMSPage(map, massSMSForm);
}

//and so on
}

这是形式:

<form:form method="post" enctype="multipart/form-data"
modelAttribute="massSMSForm">

<c:if test="${!empty errorFlag}">
<div class="alert alert-danger">
<b>Ошибка. </b>
<form:errors path="file" />
</div>
</c:if>

<table>
<tr>
<td><input type="file" name="file" accept="text/xml, text/plain" /></td>
</tr>
<tr>
<td><br /> <input type="submit" value="Загрузить" /></td>

</tr>
</table>
</form:form>

此页面必须上传文件并检查其名称。正如您所看到的,有一种特殊的方法来处理 POST 请求。但我的服务器在提交后说不支持请求方法“POST”。怎么了?我是否必须使用 command attr.,而不是 modelAttribute 还是什么?

更新:

生成的HTML:

<form id="massSMSForm" action="/smsc/userRole/sms/mass" method="post" enctype="multipart/form-data">    

<table>
<tr>
<td><input type="file" name="file" accept="text/xml, text/plain"/></td>
</tr>
<tr>

<td><br /> <input type="submit" value="Загрузить" /></td>

</tr>
</table>
<input type="hidden" name="_csrf" value="0cd9d283-2ca7-4adc-af4a-ce72a09ceaae" />
</form>

此外,如果我删除 enctype="multipart/form-data",则不会出现此消息。我试图添加 headers = "content-type=multipart/form-data",但没有效果。

最佳答案

您已重复相同的 PATH 两次,但未在第一次中指定请求类型。

将第一个更改为

      @RequestMapping(value="/userRole/sms/mass" ,method = RequestMethod.GET) 

看起来正在获取第一条路径

查看你的 html 路径,我猜你有一个像这样的 Controller

 @Controller
@RequestMapping("/smsc/")
public class MyController{}

还在您的方法中更改 modelAndAttribute

   MultipartHttpServletRequest defaultMultipartHttpServletRequest

并从表单中删除。您发送的是文件而不是实体

关于java - Spring不支持请求方法 'POST',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25052720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com