2010-03-06 28 views
3

我想根據JSP上的URL請求顯示特定的消息。JSTL中的解析請求URL

請求URL可以是:

/app/cars/{id} 

OR

/app/people/{id} 

在我messages.properties我有:

events.action.cars=My car {0} event 
events.action.people=My person {1} event 

最後,我的JSP頁面上我想有以下代碼:

<spring:message code="events.${element.cause}.${?????}" 
       arguments="${element.param['0']},${element.param['1']}"/> 

我需要幫助確定哪些表達式可以用來解析請求URL並獲取ID之前的單詞。

回答

0
/app/(cars|people)/([^/]*)$ 

會把carspeople在反向引用\1,這取決於比賽,不管是留在最後一個斜線的右反向引用\2

+0

JSTL沒有任何正則表達式功能。 – BalusC 2010-03-07 05:46:52

7

您可以訪問JSTL請求URI(實際上:EL)如下:

${pageContext.request.requestURI} 

(因而它能返回HttpServletRequest#getRequestURI()

然後,以確定它,你就必須發揮與JSTL functions taglib位圓。它提供了幾種字符串操作方法,如split(),indexOf(),substringAfter()等。不,沒有人支持正則表達式。只是解析它。

開球例如:

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

而且使用它作爲${id}

+2

我認爲提問者想知道如何在泉城做到這一點。 – 2010-03-07 06:01:26

+1

@精英紳士:JSTL被明確標記和提及。儘管如此,歡迎您發佈Spring的針對性答案。如果可以在春季完成:) – BalusC 2010-03-07 06:05:39

+1

對不起,我還沒有看到標籤...+1這個和你的回答:-) – 2010-03-07 06:19:54

0

我的解決方法到目前爲止是有匹配的正則表達式一個RequestUtils類 「?/ JSP /(\ w +)/。的.jsp」並返回組(1)。

在我的jsp中我得到了:


<% request.setAttribute("entity", RequestUtils.getEntityURI(request)); %> 
<spring:message code="events.${element.cause}.${entity}" 
       arguments="${element.param['0']},${element.param['1']}"/> 

本課程並獲得成功。但是最好不要在JSP中有任何Java代碼。

0

如果我理解正確的話,我認爲你需要做這樣的事情:

@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET) 
public String findOwner(@PathVariable String ownerId, Model model) { 
    model.addAttribute("ownerId", ownerId); 
    return "myview"; 
} 

正如你可以看到,這裏的OWNERID從由Spring MVC的URL讀取。之後,您只需將變量放在Model映射中,以便在JSP中使用它。

+0

不是真的在春天我得到了一個控制器顯示一輛車或一個人。在每個視圖中,每個實體的彈簧消息都被格式化爲不同的。 like events.activate.cars = car activated and events.activate.people = Person activated。 – JorgeO 2010-03-09 15:37:30