(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>
發佈了71 篇原創文章 · 獲贊 82 · 訪問量 51萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章