列表操作
Posted 杨晨光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表操作相关的知识,希望对你有一定的参考价值。
最近在项目中,需要对列表进行操作
进行上移&下移操作
JSP
<!--显示数据列表-->
<tbody id="TableData" class="dataContainer" datakey="forumList">
<s:iterator value="#forumList" status="status">
<tr class="TableDetail1 template">
<td>$name </td>
<td>$description </td>
<td>
<span style="white-space:pre"> </span><s:a action="forumManage_delete?id=%id" onClick="return delConfirm()" >删除</s:a>
<s:a action="forumManage_editUI?id=%id" >修改</s:a>
<span style="white-space:pre"> </span><s:a action="forumManage_moveUp?id=%id" >上移</s:a>
<s:a action="forumManage_moveDown?id=%id" >下移</s:a>
</td>
</tr>
</s:iterator>
</tbody>
Action
@Controller
@Scope("prototype")
public class ForumManageAction extends BaseAction<Forum>
<span style="white-space:pre"> </span>//其他代码省略
//上移
public String moveUp() throws Exception
forumService.moveUp(model.getId());
return "toList";
//下移
public String moveDown() throws Exception
forumService.moveDown(model.getId());
return "toList";
Service实现
@Service
@Transactional
@SuppressWarnings("unchecked")
public class ForumServiceImpl extends DaoSupportImpl<Forum> implements ForumService
<span style="white-space:pre"> </span>//重写findAll方法(根据position字段排序)
@Override
public List<Forum> findAll()
return getSession().createQuery(
"From Forum f ORDER BY f.position")
.list();
@Override
public void moveDown(Long id)
//找出相关的Forum
Forum forum = getById(id); //当前要移动的Forum
Forum other = (Forum)getSession().createQuery(
"FROM Forum f WHERE f.position>? ORDER BY f.position ASC ")
.setParameter(0, forum.getPosition())
.setFirstResult(0)
.setMaxResults(1)
.uniqueResult(); //下面的那个FOrum
//最下面的不能下移
if (other == null)
return;
//交换Position的位置
int temp = forum.getPosition(); //设置一个中间值
forum.setPosition(other.getPosition());
other.setPosition(temp);
//保存到数据库中
getSession().update(other);
getSession().update(forum);
@Override
public void moveUp(Long id)
//找出相关的Forum
Forum forum = getById(id); //当前要移动的Forum
Forum other = (Forum)getSession().createQuery(
"FROM Forum f WHERE f.position<? ORDER BY f.position DESC ")
.setParameter(0, forum.getPosition())
.setFirstResult(0)
.setMaxResults(1)
.uniqueResult(); //上面的那个FOrum
//最上面的不能上移
if (other == null)
return;
//交换Position的位置
int temp = forum.getPosition(); //设置一个中间值
forum.setPosition(other.getPosition());
other.setPosition(temp);
//保存到数据库中
getSession().update(other);
getSession().update(forum);
增强用户体验,不能点的按钮需要变灰
<!--显示数据列表-->
<tbody id="TableData" class="dataContainer" datakey="forumList">
<s:iterator value="#forumList" status="status">
<tr class="TableDetail1 template">
<td>$name </td>
<td>$description </td>
<td>
<s:a action="forumManage_delete?id=%id" onClick="return delConfirm()" >删除</s:a>
<s:a action="forumManage_editUI?id=%id" >修改</s:a>
<!--最上面的不能上移 -->
<s:if test="#status.first">
<span class="disabled">上移</span>
</s:if>
<s:else>
<s:a action="forumManage_moveUp?id=%id" >上移</s:a>
</s:else>
<!-- 最下面的不能下移 -->
<s:if test="#status.last ">
<span class="disabled">下移</span>
</s:if>
<s:else>
<s:a action="forumManage_moveDown?id=%id" >下移</s:a>
</s:else>
</td>
</tr>
</s:iterator>
</tbody>
增加Status属性,可以查看源码IteratorStatus
* <ul>
* <li>index: current iteration index, starts on 0 and increments in one on every iteration</li>
* <li>count: iterations so far, starts on 1. count is always index + 1</li>
* <li>first: true if index == 0</li>
* <li>even: true if (index + 1) % 2 == 0</li>
* <li>last: true if current iteration is the last iteration</li>
* <li>odd: true if (index + 1) % 2 == 1</li>
* </ul>
以上是关于列表操作的主要内容,如果未能解决你的问题,请参考以下文章