gpt4 book ai didi

java - Controller 使用 void 方法返回 404 页面

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

我正在使用 Spring 4 开发 Web 应用程序。

我有这个 Controller

@RequestMapping(value = "/submitIdesFalse", method = RequestMethod.POST)
public void setSubmitIdesFalse(Map<String, Object> model, Locale loc) throws UnknownHostException, DataIntegrityViolationException, DataException, MysqlDataTruncation{
final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
final String userName = authentication.getName();

final Company company = companyService.getCompanyByUser(userName);
final Integer reportingYear = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR) - 1; // Previous year
final License license = licenseService.getLicense(company.getId(), reportingYear);

if(license.getIsSubmitted()){
log.debug("Files already submitted");
}else{
Date date = new Date();
license.setId(license.getId());
license.setIsSubmitted(true);
license.setDateSubmitted(new Timestamp(date.getTime()));
license.setUserSubmitted(userName);
licenseService.saveLicense(license);

log.debug("User Name is: " + userName);
log.debug("Company " + company.getName() + " set to Submitted FATCA Status");

final String emailList = this.fatcaWebProperties.getProperty(ApplicationPropertyName.EMAIL_LIST.getPropertyName());
final String[] emailListSplited = emailList.split(",");
final InetAddress ip = InetAddress.getLocalHost();
final TimeZone timeZone = TimeZone.getTimeZone("Canada/Eastern");
final String localDateTime = FatcaWebUtility.getDate();
final String opesDateTime = FatcaWebUtility.getDateWithTimeZone(timeZone);
final String companyName = company.getName();
final Long companyId = company.getId();
if(!company.getName().equals("OPES")){
for (int i = 0; i < emailListSplited.length; i++) {
emailSenderService.sendSubmittedOpesMail(ip, emailListSplited[i], companyId, companyName, localDateTime, opesDateTime, userName);
}
}

}

这是一个void方法,调用该页面的形式是:

<form:form method="post" action="submitIdesFalse.html">                                                                             
<input type="submit" id="sendGenerateSubmit" value="Generate and Submit" />
</form:form>

调用 Controller 后,它返回 404 页面,指出未找到 submitIdesFalse.jsp,但我的 Controller 是 void

我试图让该方法返回一个String,它返回我调用的页面,但是当我设置void时,它返回这个奇怪的404。

我发布了所有 Controller 以确保我没有遗漏任何内容,对于代码量感到抱歉。

顺便说一下,我使用的是 Tomcat 7

有什么想法吗?

最佳答案

如果你想让你的 Controller 保持无效 - 但我看不出这样做的任何理由 - 你必须自己管理 HttpServerResponse ,所以你需要类似的东西

public void setSubmitIdesFalse(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response, Locale loc)

在 Controller 完成其工作后,您可以设置适当的 HttpServletResponse,就像我们过去对“普通”Servlet 所做的那样,在 Spring 等 MVC 框架出现让我们的生活变得更轻松之前:-)

Controller 是 MVC 模式的三个组件之一。标准 Controller 应该返回一些东西,一个“ View ” - 即使是空的,只有一个 HTTP 200 OK - 这就是为什么它通常为空,并且可能返回一个字符串、ModelAndView 或 ResponseBody(RESTFull Controller )。

关于java - Controller 使用 void 方法返回 404 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32503605/

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