跟着汤阳光同志做一个OA系统(十):论坛管理模块、上移下移功能

79 篇文章 1 订阅
35 篇文章 0 订阅

实现上移下移功能,通过在实体中添加一个position字段

1:查询的时候orderbyposition

         通过复写findAll方法

         @Override

    public List<Forum> findAll() {

       return getSession().createQuery(//

              "FROM Forumf ORDER BY f.position")//

              .list();

    }

2position必须唯一

         通过复写save方法,把position设置为自己的id

         @Override

    publicvoid save(Forum forum) {

       //保存

       super.save(forum);

       //设置position的值

       forum.setPosition(forum.getId().intValue());

    }

3:上移下移就是通过修改对象的position

         //需要找到我的上一个对象

子查询

排序分页取第一个方式

 

         publicvoid moveUp(Long id) {

       //找出相关的Forum

       Forum forum = getById(id);// 当前要移动的Forum

       Forum other = (Forum) getSession().createQuery(//我上面的那个Forum

              "FROM Forumf WHERE f.position<? ORDER BY f.position DESC")//

              .setParameter(0, forum.getPosition())//

              .setFirstResult(0)//

              .setMaxResults(1)//

              .uniqueResult();

 

       //最上面的不能上移

       if (other ==null) {

           return;

       }

 

       //交换position的值

       int temp = forum.getPosition();

       forum.setPosition(other.getPosition());

       other.setPosition(temp);

 

       //更新到数据中(可以不写,因为对象现在是持久化状态)

       getSession().update(forum);

       getSession().update(other);

    }

 

    publicvoid moveDown(Long id) {

       //找出相关的Forum

       Forum forum = getById(id);// 当前要移动的Forum

       Forum other = (Forum) getSession().createQuery(//我下面的那个Forum

              "FROM Forumf WHERE f.position>? ORDER BY f.position ASC")//

              .setParameter(0, forum.getPosition())//

              .setFirstResult(0)//

              .setMaxResults(1)//

              .uniqueResult();

 

       //最下面的不能下移

       if (other ==null) {

           return;

       }

 

       //交换position的值

       int temp = forum.getPosition();

       forum.setPosition(other.getPosition());

       other.setPosition(temp);

 

       //更新到数据中(可以不写,因为对象现在是持久化状态)

       getSession().update(forum);

       getSession().update(other);

    }

4:最上面的不能上移,最下面的不能下移

<s:iteratorvalue="#forumList"status="status">

           <trclass="TableDetail1template">

              <td>${name}&nbsp;</td>

              <td>${description}&nbsp;</td>

              <td>

                  <s:aaction="forumManage_delete?id=%{id}"onclick="return delConfirm()">删除</s:a>

                  <s:aaction="forumManage_editUI?id=%{id}">修改</s:a>

                 

                  <!--最上面的不能上移 -->

                  <s:iftest="#status.first">

                     <spanclass="disabled">上移</span>

                  </s:if>

                  <s:else>

                      <s:a action="forumManage_moveUp?id=%{id}">上移</s:a>

                  </s:else>

                 

                  <!--最下面的不能下移 -->

                  <s:iftest="#status.last">

                     <spanclass="disabled">下移</span>

                  </s:if>

                  <s:else>

                     <s:aaction="forumManage_moveDown?id=%{id}">下移</s:a>

                  </s:else>

                 

              </td>

           </tr>

        </s:iterator>

 

.disabled{

        color: gray;

        cursor: pointer;

    }


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值