gpt4 book ai didi

spring-mvc - 提交 Spring 表单时上下文根没有出现 - url 模式问题

转载 作者:行者123 更新时间:2023-12-04 23:45:12 27 4
gpt4 key购买 nike

下面是我的 Controller 、web xml 和使用 spring 形式的 jsp 页面。

Controller

@Controller
@RequestMapping(value = {"/*", "/login"})
public class HelloWorldController {

@RequestMapping(method = RequestMethod.GET)
public String helloWorld(final Model model) {
model.addAttribute("bodyPage", "body.jsp");
User user = new User();
Address address = new Address();

user.setAddress(address);

model.addAttribute("myUser", user);
System.out.println("hello world");
return "login";
}


@RequestMapping(value = "/submitDetails", method = RequestMethod.POST)
public ModelAndView submitDetais(final Object command) {

System.out.println("inside submitDetais ");
User user = (User) command;
return new ModelAndView("result", "user", user);
}
}

网页 XML
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

Jsp页面
<form:form commandName="myUser" modelAttribute="myUser" method="POST" action="submitDetails.htm" >
<table>
<tr>
<td>First Name:</td>
<td><form:input path="firstName" /></td>
</tr>
<tr>
<td>Last Name:</td>
<td><form:input path="lastName" /></td>
</tr>

<tr>
<td>Address 1:</td>
<td><form:input path="address.address1" /></td>
</tr>

<tr>
<td>Address 2:</td>
<td><form:input path="address.address2" /></td>
</tr>

<tr>
<td colspan="2"><input type="submit" value="Save Changes" /></td>
</tr>
</table>
</form:form>

Dispathcher servlet 只有 View 解析器。现在,如果我导航到以下 url,则按照 Contoller 中定义的类级别 url 模式
http://localhost:9080/ExampleSpringhttp://localhost:9080/ExampleSpring/

controll 将转到我的 jsp 页面并询问详细信息。如果我使用表单操作提交表单,则输入详细信息后
action="submitDetails.htm"正如在行动中提到的,它抛出 404 错误。地址栏中的网址是
本地主机:9080/submitDetails.htm
缺少项目的上下文根。我的问题是我在请求映射 url 部分做错了什么?

按照我的理解

1.表单是使用数学公式提交的
2./submitDetails.htm 匹配类级别 url 模式映射中的模式/* 所以请求应该进入 Controller ,
3.最后, Controller 方法中的方法级别映射具有
与操作 amd 方法相同的 url 模式 amd 请求方法
在jsp中,所以它应该进入 Controller 方法并在
控制台---这不发生。

任何人都可以帮助我理解这一点吗?

最佳答案

根据我的理解,您在表单的 action 属性中缺少上下文路径。尝试将其定义如下:

<form:form commandName="myUser" modelAttribute="myUser" method="POST" action="${pageContext.servletContext.contextPath}/submitDetails.htm" >

关于spring-mvc - 提交 Spring 表单时上下文根没有出现 - url 模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30253153/

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