在JSTL中解析请求URL

Jor*_*geO 3 regex spring jstl url-parsing

我想基于JSP上的URL请求显示特定消息.

请求URL可以是:

/app/cars/{id}
Run Code Online (Sandbox Code Playgroud)

要么

/app/people/{id}
Run Code Online (Sandbox Code Playgroud)

在我的messages.properties身上我得到了:

events.action.cars=My car {0} event
events.action.people=My person {1} event
Run Code Online (Sandbox Code Playgroud)

最后,在我的JSP页面上,我想要以下代码:

<spring:message code="events.${element.cause}.${?????}"
                arguments="${element.param['0']},${element.param['1']}"/>
Run Code Online (Sandbox Code Playgroud)

我需要帮助找出我可以使用哪个表达式来解析请求URL并获取ID之前的单词.

Bal*_*usC 7

您可以在JSTL中访问请求URI(实际上是:EL),如下所示:

${pageContext.request.requestURI}
Run Code Online (Sandbox Code Playgroud)

(因此返回HttpServletRequest#getRequestURI())

然后,为了确定它,你将不得不使用JSTL函数taglib进行一些循环.它提供了几个字符串操作方法,如split(),indexOf(),substringAfter()等,没有,没有人支持正则表达式.只是解析它.

开球示例:

<c:set var="pathinfo" value="${fn:split(pageContext.request.requestURI, '/')}" />
<c:set var="id" value="${pathinfo[pathinfo.length - 1]}" />
Run Code Online (Sandbox Code Playgroud)

并用它作为${id}.

  • 我认为提问者想知道如何在斯普林斯做这件事. (2认同)