的Spring MVC异常无法解析名为where use';重定向:“;内部控制器
我发现SpringViewResolver有一些有趣的问题 我已经建立了一个简单的SpringMVC应用程序 spring-servlet.xml如下所示:的Spring MVC异常无法解析名为where use';重定向:“;内部控制器,spring,spring-mvc,url-redirection,Spring,Spring Mvc,Url Redirection,我发现SpringViewResolver有一些有趣的问题 我已经建立了一个简单的SpringMVC应用程序 spring-servlet.xml如下所示: <mvc:resources location="/images/" mapping="/images/**" /> <mvc:resources location="/css/" mapping="/css/**" /> <mvc:annotation-driven /> <con
<mvc:resources location="/images/" mapping="/images/**" />
<mvc:resources location="/css/" mapping="/css/**" />
<mvc:annotation-driven />
<context:component-scan base-package="thymeleafexamples.thvsjsp" />
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="Messages" />
</bean>
<bean id="templateResolver"
class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
<property name="prefix" value="/WEB-INF/templates/" />
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML5" />
</bean>
<bean id="templateEngine"
class="org.thymeleaf.spring3.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver" />
</bean>
<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine" />
<property name="viewNames" value="index,*th" />
<property name="order" value="1" />
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/templates/" />
<property name="suffix" value=".jsp" />
<property name="viewNames" value="*jsp" />
<property name="order" value="2" />
</bean>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="Messages" />
</bean>
<bean id="templateResolver"
class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
<property name="prefix" value="/WEB-INF/templates/" />
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML5" />
</bean>
<bean id="templateEngine"
class="org.thymeleaf.spring3.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver" />
</bean>
<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine" />
<property name="viewNames" value="index,*th" />
<property name="order" value="1" />
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/templates/" />
<property name="suffix" value=".jsp" />
<property name="viewNames" value="*jsp" />
<property name="order" value="2" />
</bean>
and web.xml as
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
我的控制器如下所示:
@Controller
public class SubscribeJsp {
private static final Logger log = Logger.getLogger(SubscribeJsp.class);
public SubscribeJsp() {
super();
}
@ModelAttribute("allTypes")
public SubscriptionType[] populateTypes() {
return new SubscriptionType[] { SubscriptionType.ALL_EMAILS, SubscriptionType.DAILY_DIGEST };
}
@RequestMapping(value="/subscribe",method=RequestMethod.GET)
public String showSubscription(final Subscription subscription) {
return "subscribejsp";
}
@RequestMapping(value="/subscribesave", params={"save"})
public String subscribe(final Subscription subscription, final BindingResult bindingResult, final ModelMap model) {
if (bindingResult.hasErrors()) {
return "subscribejsp";
}
log.info("JUST ADDED SUBSCRIPTION: " + subscription);
model.clear();
return "redirect:subscribe";
}
}
您应该使用绝对路径进行重定向,除非您确实希望查找相对于当前路径的url。因此,您只需这样编写重定向:
return "redirect:/subscribe";
你应该把线移走
<property name="viewNames" value="*jsp" />
从
springservlet.xm
文件中的InternalResourceViewResolver
。它会阻止它正确查找不以jsp结尾的视图(包括重定向…),并且对任何事情都没有帮助。谢谢Serge Ballesta,解决方案通过删除
但我使用了两种不同的视图解析器,一种用于jsp,另一种用于thymeleaf。
我想要他们两个相应的作品。实际上我不想保留jsp页面和
在两个不同的文件夹中启用了thymeleaf的html页面,我不能返回两个
从我的控制器以jsp/mypage.jsp或thymelef/th.html的形式查看名称。有什么建议吗
解决这个问题。
在这种情况下,这会有所帮助,但对于这个问题,我必须对jsp和控制器映射名称使用相同的名称保持:
<property name="viewNames" value="index,*th" />
删除:
<property name="viewNames" value="*jsp" />
您应该更正return“redirect:subscribe”中的return语句代码>到返回“重定向:/subscribe”代码>我使用了spring webmvc dependency 3.2.3和thymeleaft 2.13,请确保将控制器类路径添加到spring-servlet.xml文件中的组件扫描中。我使用了该解决方案,但在这种情况下,我得到了相同的错误。只有当我将requestmapping从subscribe更改为subscribejsp并更改重定向:/subscribejsp@kamlesh另一个原因是
-post-edited
<property name="viewNames" value="*jsp" />