如何使用jstl从url获取一些值

时间:2015-10-10 03:12:42

标签: java spring-mvc redirect

我有same-url action的两个表单,http://www.domain.com/pre-foo-url页面上有以下表单,

<form:form commandName="some" class="form" action="/app/same-url">
    <form:input path="title"/>
    <input type="hidden" name="redirect" value="foo"/>
    <button>OK</button>
</form:form>

,另一个表单位于http://www.domain.com/bar/{id}

 <form:form commandName="some" class="form" action="/app/same-url">
    <form:input path="tile"/>
    <input type="hidden" name="redirect" value="bar"/>
    <button>OK</button>
 </form:form>

我的控制器中的两个方法,一个用于决定重定向到

@RequestMapping(value = "/same-url", method = RequestMethod.POST)
public String handleRedirect(@RequestParam("redirect") String redirect) {
    if (redirect.equals("foo")) {               
        return "redirect:/foo";         
    } else {
        return "redirect:/bar/{id}"; // this {id} must get the value from http://www.domain.com/bar/{id}<-- Here
    }
} 

return "redirect:/bar/{id}";获取id值并转到/bar/{id}请求映射的其他方法

@RequestMapping(value = "/bar/{id}", method = RequestMethod.GET)
public String handleBar(@PathVariable Integer id) {
    // some logic here 
    return "go-any-where";
}

现在我如何从http://www.domain.com/bar/{id}获取价值,并在我将其重定向到redirect:/bar/{id}时将其设置为

1 个答案:

答案 0 :(得分:2)

我有一个满足您需求的解决方案,首先我必须指出您的需求然后我会写下我的答案。

  

首先:

     

- 您需要从/{id}获取http://www.domain.com/bar/{id},这意味着您希望获取网址最后一部分的值。

您可以在页面http://www.domain.com/bar/{id}

上添加以下代码来获取该值
<c:set var="currentPage" value="${requestScope['javax.servlet.forward.request_uri']}"/> <!--This will give you the path to current page eg- http://www.domain.com/bar/360 -->
<c:set var="splitURI" value="${fn:split(currentPage, '/')}"/> <!--This will split the path of current page -->
<c:set var="lastValue" value="${splitURI[fn:length(splitURI)-1]}"/><!--This will give you the last value of url "360" in this case -->
<c:out value="${lastValue}"></c:out> <!--use this to make sure you are getting correct value(for testing only) -->
  

第二:

     

- 您必须传递/{id}的{​​{1}}值。

使用表格传递此信息。

http://www.domain.com/bar/{id}
  

最后:

     

- 您希望被重定向到<form:form commandName="some" class="form" action="/app/same-url"> <form:input path="title"/> <input type="hidden" name="redirect" value="bar"/> <input type="hidden" name="path-var" value="${lastValue}"/> <button>OK</button> <form:form>

这可以使用以下方法完成。

redirect:/bar/{id}"

重要

  

这不是上述问题的最后/最佳解决方案。

可能还有其他/更好的解决方案。

  

在使用任何jstl函数时添加此标记lib @RequestMapping(value = "/add-category", method = RequestMethod.POST) public String handleRedirect(@RequestParam("redirect") String redirect, @RequestParam("path-var") String pathVar) { if (redirect.equals("foo")) { return "redirect:/foo"; } else { return "redirect:/bar/" + pathVar; } } ,就像<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>一样。

希望这对你有用。