兩知識點一問:s:if中不能寫動態信息,action層從session中空變量並等於null

今天要兩個知識點以及留下一個問題:

知識點一:s:if中不能寫動態信息,如el表達式

知識點二:session中某個變量是爲空的,或說不存在,但action層獲取到該變量並不爲空

問題:通過ajax,調用action層,向數據庫插入數據後,頁面自動刷新。當刪除新插入的數據時,刪除的是前一條數據


知識點具體情況如下:

知識點一:

<s:if>中若要比較兩個變量是否相等,如判斷登陸的帳號和評論的帳號是否一致時,得寫<s:if  test="#session.login_account == #request.user"></s:if>,切不能用${request.user}

知識點二:本來通過ajax,調用action時,可通過action的返回值來alert不同信息。那驗證登陸是否也可這樣:通過獲取session中登陸狀態,若爲空,則返回請登陸的信息。然而事實卻無法實現,即使action層有get、set方法。因爲這時就算是未登錄的,登陸狀態變量並不是空或是null


問題:在一個評論回覆功能中,前臺通過查詢、迭代獲取數據庫的評論以及評論對應的回覆。每一條評論或是回覆都有一個“刪除”操作。評論、回覆是用ajax+action實現的,成功向數據庫插入數據後(即回覆功能),ajax用window.location.reload();刷新頁面,而該回復會因爲之前的查詢迭代而顯示出來,但是當執行“刪除”操作,刪除的是前一條插入數據庫的數據。這是爲什麼?


-----------------------------------------------------------------------------------------------

關於這問題,今天解決了。但事實上似乎不是上述問題來的。正確的是當回覆一條評論後,再刪除該評論的任何一條回覆,都會變成刪掉第一條回覆。原因是:在js 中我用了getElementsById來獲取該回復的ID,原本頁面是沒有重複id="ID"的,但由於迭代,id="ID"變成有多條,因此getElementsById只能獲取一條,並且是第一條。

而解決方法是向js傳遞參數,這裏剛好學習到一個知識點:如何通過onclick向js傳遞多個參數?

οnclick="reply('<s:property value="#comment.id"/>','<s:property value="#comment.user"/>')"

而傳遞一個參數時則不用那麼多引號:οnclick="reply(<s:property value="#comment.id"/>)"


最後,關於上次提到的未登錄時,action從session中獲取到的登錄狀態並不是null。是否可以用StringUtil.isBlank(login_status)來進行某個判斷呢?


---------------------------------------------------------------------------------------------------------------------------------

2016年02月19日進行編輯

工作半年多,重新看完之前留下的問題,覺得變得非常簡單。

導致問題的出現是因爲讀取數據庫中的數據,循環顯示出來時作爲標示的id重複了。處理方法跟動態表格一樣。畢業後在工作上常常碰到此類問題。

忽然覺得自己這半年中也是有進步的。

不過這篇解決問題的筆記可能對大家沒多大的作用吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章