开发者

Restful Path Parameters in Spring MVC 3

开发者 https://www.devze.com 2023-01-01 14:35 出处:网络
Is it possible to: set a URI template in the mvc:view-controller element of the *-servlet.xml file or in a controller m开发者_如何学运维ethod and then use/get that path parameter in a jsp?

Is it possible to: set a URI template in the mvc:view-controller element of the *-servlet.xml file or in a controller m开发者_如何学运维ethod and then use/get that path parameter in a jsp?

I understand that using @PathVariable in a controller method will give me access to the path parameter in that controller method. But how can I gain access to the path parameter in the jsp?

For example, is it possible to do something like:

*-servlet.xml file:

<beans...>
<mvc:view-controller path="/home" view-name="home"/>
<mvc:view-controller path="/home/{error}" view-name="home"/>
</beans>

jsp file:

<c:if test="${not empty param['error']}">
<span class="error">You have an error...</span>
</c:if>


If you want access to it in the jsp, return it as an attribute from the controller:

@RequestMapping("/home/{error}")
public void handleError(@PathVariable String error, ModelMap model) {
    //your regular stuff

    model.addAttribute("error", error);
}

-

<c:if test="${not empty error}">
<span class="error">You have an error...</span>
</c:if>


The Map of resolved path variables is exposed as an attirubte with name specifed by HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE. So, the solution is

<c:if test="${not empty requestScope['org.springframework.web.servlet.HandlerMapping.uriTemplateVariables']['error']}">

But accessing it this way is probably not a best idea, Affe's solution is cleaner.

0

精彩评论

暂无评论...
验证码 换一张
取 消