我正在使用Spring MVC3.2并且我有一个注册表单(http://my-server.com:8080/tracks/apks)。用户将其发布到服务器,服务器将在验证失败时返回错误消息。但是我从服务器收到错误消息,URL与我想要的不同。这是我的代码:
Web.xml
<servlet-mapping>
<servlet-name>tracks</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
applicationContext.xml
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
@Controller
@RequestMapping("/apks")
public class ApkController {
@RequestMapping()
public ModelAndView index() {
Map<String, Object> modelMap = new HashMap<String, Object>();
modelMap.put("menus", AdminService.getMenus("apks"));
return new ModelAndView("apks", "model", modelMap);
}
@RequestMapping(value = "/insert", method = RequestMethod.POST)
public ModelAndView uploadApk(ApkInfo apkInfo, BindingResult bindingResult) {
Map<String, Object> modelMap = new HashMap<String, Object>();
modelMap.put("menus", AdminService.getMenus("apks"));
if (!fileExists(apk.getFileName())){
modelMap.put("message", message);
}
//Do something
return new ModelAndView("apks", "model", modelMap);
}
调用uploadApk后,我预计会http://my-server.com:8080/tracks/apks,但返回的网址为http://my-server.com:8080/tracks/apks/insert。
我该怎么做才能修复它?
提前致谢。
答案 0 :(得分:0)
&#39;返回的网址&#39;意思?
您应该访问&#39; http://my-server.com:8080/apks/insert&#39;拨打&#39; uploadApk&#39;方法 因为你有
@RequestMapping("/apks")
在您的控制器上
@RequestMapping(value = "/insert", method = RequestMethod.POST)
在您的&#39; uploadApk&#39;方法
你是怎么称呼'uploadApk&#39;方法
我认为您应该更多地解释它以获得适当的答案。
由于web.xml中servlet-mapping的url-pattern是&#39; /&#39;, 你应该删除&#39; / track&#39;在你的网址。
&#39;轨道&#39;只是一个servlet名称而不是servlet路径。
因此,如果您访问/ tracks / apks / insert,则会出现404错误。 访问/ apks / insert代替。
我猜您在调用“uploadApk”之后可能需要重定向。方法 因为你附加了重定向&#39;在您的问题上标记并使用“返回的网址”字样。 (右?)
如果我的猜测正确并且您想要重定向浏览器,请参阅SpringMVC 3.2 Redirect View docs。
使用以下代码重定向。
return new RedirectView("url-you-want");
或
return "redirect:url-you-want"
答案 1 :(得分:0)
观察结果。