2010-10-08 106 views
2

我有一個Spring Controller,我正在設置一個帶有變量的會話對象。Spring MVC - JSTL - 會話屬性

@RequestMapping("/index.html") 
public String indexHandler(HttpSession session, 
          HttpServletRequest request,           
          HttpServletResponse response){ 

      session = request.getSession(true); 
      session.setAttribute("country","India"); 
      session.setAttribute("url", getAuthURL());//getAuthURL returns a string 

    return "tempJSP"; 
    //tempJSP is a JSP under webroot/jsps/ and this is configured in Dispatcher servlet 
} 

tempJSP.jsp

//My 2 taglibs are declared here one is core and other is format 
<c:redirect url=<%(String)session.getAttribute("url")%> //Here it fails 
+2

您需要向我們提供更多信息,而不是說「在這裏失敗」。 *它如何失敗? – skaffman 2010-10-09 15:07:08

回答

2

因爲<% %>沒有打印任何失敗,c:redirect標籤無法正常關閉,並且還可能因爲該值不加括號。您寧願要這樣:

<c:redirect url="<%= session.getAttribute("url") %>" /> 

請注意,演員陣容是不必要的。

但是,使用老式小腳本是因爲十年discouraged。而是使用EL。然後它變得如此簡單而美好:

<c:redirect url="${url}" /> 
+0

是的,你是對的Balu。我不應該使用scriptlet。另外還有另一個問題,那就是選擇正確的taglib.I將它從「<%@ taglib uri ='http://java.sun.com/jstl/core'prefix ='c'%>」更改爲<%@ taglib uri ='http://java.sun.com/jstl/core'prefix ='c'%>解決了問題 – sv1 2010-10-09 21:05:28

+0

正確的是在URI中使用'/ jsp':http:// java.sun.com/JSP/JSTL/core'。 – BalusC 2010-10-09 21:07:17