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

xiaoxiao2021-02-28  22

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

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&¶ms.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>
转载请注明原文地址: https://www.6miu.com/read-800101.html

最新回复(0)