(crm笔记2-2)在前端页面输出后台查询出的表单数据
程序员文章站
2022-05-08 14:34:35
...
在前端页面输出后台查询出的表单数据/
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>
上一篇: 基于 SSM 的 CRM 客户管理系统
下一篇: 大雪吃什么食物