两知识点一问: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重复了。处理方法跟动态表格一样。毕业后在工作上常常碰到此类问题。

忽然觉得自己这半年中也是有进步的。

不过这篇解决问题的笔记可能对大家没多大的作用吧。

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