(crm笔记2-2)在前端页面输出后台查询出的表单数据

在前端页面输出后台查询出的表单数据/


1、需求



在后台查询到的数据,需要传到前端的jsp页面中进行显示。

实现效果如下:

这里写图片描述


2、思路


1)前端点击事件, 触发事件, 调用Action 中的方法, 方法调用业务层的方法进行数据的查询 , 业务层调用Dao 。

2)将后台的Dao层查到的数据传送到Action 的方法中, 通过 HttpServletRequest 将数据传送到jsp, 然后利用 struts2.xml 进行页面跳转到目标显示页面

3)在页面将标签改为 struts2 标签,对需要显示的表单 form 标签调用迭代器循环输出数据。




3、实现代码



1)前端跳转代码:

<a href="${pageContext.request.contextPath}/sys/sysUserGroupAction_list.do" target="rightFrame">部门设置</a></li>

跳转到Action 中的 list()方法 。 调用业务层的代码,无条件查询数据:

    public String list(){

        List <SysUserGroup>sysUserGroups= sysUserGroupService.findSysUserGroup();//调用业务层查询
        request.setAttribute("sysUserGroups", sysUserGroups);//将查询到的数据传入给前端页面
        System.out.println("sysUserGroups:"+sysUserGroups);
        return "list";//返回目标页面
    }



2)业务层查询

    @Override
    public List<SysUserGroup> findSysUserGroup() {
        //组织查询条件
        String whereHql="";

        List paramsList=new ArrayList<>();

        Object[]params=paramsList.toArray();

        LinkedHashMap<String , String> orderby=new LinkedHashMap<String ,String>();
        orderby.put("o.name", "asc");

        return sysUserGroupDao.findObjectByConditionWithNoPage(whereHql, params, orderby);
    }



3)dao层

@Override
    public List<T> findObjectByConditionWithNoPage(String whereHql,final Object[] params ,LinkedHashMap<String, String>orderby) {
        //获取hql语句select前半部分
        String hql="select o from "+entityClass.getSimpleName()+" o where 1=1 ";
        System.out.println("hql:"+hql);

        if(StringUtils.isNotBlank(hql)){
            hql+=whereHql;//加入接收到的where部分
        }
        System.out.println("hql:"+hql);
        String orderbyStr=buildOrderBy(orderby);//写一个方法组织orderby语句部分

        hql+=orderbyStr;//加入接收到的orderby部分
        System.out.println("hql "+hql);

        final String fhql=hql;

        //调用hibernate中的方法执行query语句
        @SuppressWarnings("unchecked")
        List list=(List<T>)this.getHibernateTemplate().execute(new HibernateCallback(){
            @Override
            public Object doInHibernate(Session session)throws HibernateException, SQLException {
                Query query=session.createQuery(fhql);
                if(params!=null&&params.length>0){
                    for(int i=0;i<params.length;i++)
                        query.setParameter(i, params[i]);
                }
                return query.list();
            }
        });
        return list;
    }

    /**
     * 组织排序条件
     * @param orderby
     * @return
     */
    private String buildOrderBy(LinkedHashMap<String, String> orderby) {
        StringBuffer  buf=new StringBuffer("");
        if(orderby!=null&&!orderby.isEmpty()){
            buf.append(" order by ");
            for(Map.Entry<String ,String >em :orderby.entrySet()){
                buf.append(em.getKey()+" "+em.getValue()+",");
            }
            //去掉最后一个逗号
            buf.deleteCharAt(buf.length()-1);
        }

        return buf.toString();
    }



4)前端迭代输出:

                <s:if test="#request.sysUserGroups!=null#">
                    <s:iterator value="%{#request.sysUserGroups}" var="sysUserGroup">
                    <tr>
                        <td><input type="checkbox" name="ids" value="12"
                            class="checkbox" onClick="changeCheckCount();"></td>
                        <td><a
                            href="${pageContext.request.contextPath}/sys/sysUserGroupAction_edit.do"><s:property value="%{#sysUserGroup.name}"/></a></td>
                        <td><s:property value="%{#sysUserGroup.principal}"/></td>
                        <td><s:property value="%{#sysUserGroup.incumbent}"/></td>
                        <td><a
                            href="javascript:OpenWin('${pageContext.request.contextPath}/sys/group/usersInGroup.jsp?id=12')">设置</a></td>
                </tr>
                 </s:iterator>
                </s:if>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值