java - how to get some value from url using jstl -
i have 2 forms have same-url action, following form on page http://www.domain.com/pre-foo-url, is
<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> and other form on 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> two methods in controller, 1 deciding redirect to
@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}"; // {id} must value http://www.domain.com/bar/{id}<-- here } } other method getting value of id return "redirect:/bar/{id}"; , goto /bar/{id} request mapping
@requestmapping(value = "/bar/{id}", method = requestmethod.get) public string handlebar(@pathvariable integer id) { // logic here return "go-any-where"; } now how can value http://www.domain.com/bar/{id} , set when redirect redirect:/bar/{id},
i have solution need, first must point out need write answer.
first:
-you need
/{id}http://www.domain.com/bar/{id}, means want value of last part of url.
you can value adding following code on page http://www.domain.com/bar/{id}
<c:set var="currentpage" value="${requestscope['javax.servlet.forward.request_uri']}"/> <!--this give path current page eg- http://www.domain.com/bar/360 --> <c:set var="splituri" value="${fn:split(currentpage, '/')}"/> <!--this split path of current page --> <c:set var="lastvalue" value="${splituri[fn:length(splituri)-1]}"/><!--this give last value of url "360" in case --> <c:out value="${lastvalue}"></c:out> <!--use make sure getting correct value(for testing only) --> scond:
-you have pass value of
/{id}gothttp://www.domain.com/bar/{id}.
pass using form as.
<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> at last:
-you want redirected
redirect:/bar/{id}".
this done using method below.
@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; } } important
this not last/best solution problem above.
there may other/better solutions one.
add tag lib
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>, when using jstl functionfn:length().
hope work you.
Comments
Post a Comment