2011-09-19 104 views
2

有沒有一種方法來驗證從Servlet傳遞給JSP的請求屬性?JSP/Servlet屬性驗證

例如,在我的servlet我做這樣的事情:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    Foo foo = new Foo(); 
    request.setAttribute("foo", foo); 
    RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/bar.jsp); 
    dispatcher.forward(request, response); 
} 

bar.jsp看起來是這樣的:

<html> 
    <body> 
     ${foo.getBaz} 
    </body> 
</html> 

在bar.jsp,是有辦法,以確保「foo」屬性是一個Foo對象嗎?我們使用Maven JSPC插件編譯JSP,在編譯時捕獲重構/重命名錯誤(如將Foo.getBaz()重命名爲Foo.getFluff())會很好。

+0

如果您使用的是像JSF,Struts,Spring MVC等MVC框架,那麼您可以利用現有的特定於框架的IDE插件來提供EL驗證。例如。 JBoss Tools for JSF。然而沒有人想到簡單的vainlla JSP/Servlet。 – BalusC

回答

0

你可以使用一個小腳本像這樣:

<% 
Foo foo = (Foo) request.getAttribute("foo"); 
String baz = foo.getBaz(); 
%> 

,然後用baz你的HTML內,<%= baz %>

1

退房Java中的instanceof運算符。它應該解決你的問題。

+0

這裏是鏈接:http://www.java2s.com/Tutorial/Java/0060__Operators/TheinstanceofKeyword.htm – TimeToCodeTheRoad

+0

我不確定你是否完全理解這個問題。你將如何通過普通的JSP/JSTL/EL手段來解決OP的問題? – BalusC

+0

他可以將代碼包含在scriptlet中 – TimeToCodeTheRoad