2013-04-29 74 views
4

我或多或少知道<%之間的區別!和<%,但我似乎無法找到<%=和<%之間的差異。我試圖通過在當前使用<%= ...%>的表達式中引入一些邏輯來避免空值錯誤。我得到一個錯誤,除非我用<%...%>替換標籤。但是在構建之後,我得到了一個jsp錯誤,而不是servlet錯誤。我不能在這裏真正粘貼我的原始代碼,但<%= ...%>中的代碼本質上是在Struts 1項目中檢索作爲servlet參數傳遞的嵌套數組對象(更像是另一個數組對象內的數組對象)。我只想添加一個try ... catch語句,以防對象的屬性尚未實例化。jsp表達式標記之間的區別<%和<%=

<%=((package.package.package.ClassName)session.getAttribute("attrName")).getObjectList()[0].getSecondObject.length%>; 

這是一個jsp問題,還是它是一個Struts 1問題?再次,這兩個標籤有什麼區別?

回答

6

<%...%>之間,你可以在java中編寫你想要的任何邏輯。

使用<%=...%>會將括號內表達式的結果輸出到屏幕上。因此,而不是寫入例如

<% System.out.println("Hello World") %> 

可以簡單的寫

<%= "Hello world" %> 

基本上,<%=%>是調用正被評估的表達式的toString()方法。

如果您需要添加空檢查邏輯,你說你需要,你可以使用

這裏是你reffer一個鏈接:

http://www.easywayserver.com/jsp/JSP-example.htm http://www.tutorialspoint.com/jsp/jsp_syntax.htm

+0

哦,好。是的,我一直在努力。我想我修復了代碼。我必須在文檔的頂部添加另一個腳本,以便爲我進行驗證:<%int number = 0;嘗試{((package.package.package.ClassName)session.getAttribute(「attrName」))。getObjectList()[0] .getSecondObject.length} catch(Exception e){number = 1}%>然後替換我的原始代碼爲<%= number %>。我仍然不太清楚差異,但你的回答是有道理的。謝謝。 – rocklandcitizen 2013-04-29 18:36:52

+0

當然沒問題。你的代碼看起來不錯 – 2013-04-29 19:04:06

+0

我認爲你的意思是<%out.print(「Hello World」)%> – 2014-07-13 09:47:52

相關問題