/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.support.struts.action;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.support.hibernate.table.SRightItem;
import com.support.hibernate.table.SRightItemDAO;
import com.support.struts.form.RightItemForm;
/**
* MyEclipse Struts
* Creation date: 08-06-2007
*
* XDoclet definition:
* @struts.action path="/rightItem" name="rightItemForm" input="/admin/rightItem/index.jsp" scope="request" validate="true"
* @struts.action-forward name="success" path="/admin/rightItem/index.jsp"
*/
public class RightItemAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
RightItemForm rightItemForm = (RightItemForm) form;// TODO Auto-generated method stub
int flag = rightItemForm.getFlag();
switch (flag) {
case 0://返回初始化菜单信息
getAllItem(request,response);
return mapping.findForward("success");
case 1://返回指定节点的菜单信息
getAllItem(request,response);
return null;
case 2://返回选中节点的信息
getRightInfo(rightItemForm);
return mapping.findForward("success");
case 3://增加同级节点
dealItem(rightItemForm,request,response);
return mapping.findForward("success");
case 4://增加子节点
dealItem(rightItemForm,request,response);
return mapping.findForward("success");
case 5://修改选中节点
dealItem(rightItemForm,request,response);
return mapping.findForward("success");
case 6://删除选中节点
dealItem(rightItemForm,request,response);
return mapping.findForward("success");
default:
break;
}
return null;
}
/**
* 获取所有已有的菜单信息展示出来供修改
* 之所以另写一个而不用MenuTree是因为每个菜单的action事件都发生了变化
* @param request
* @param response
* @throws IOException
*/
public void getAllItem(HttpServletRequest request, HttpServletResponse response) {
String parentId = request.getParameter("parentId");
if (parentId == null) parentId = "0";
SRightItemDAO rightItemDao = new SRightItemDAO();
rightItemDao.getSession().clear();
List rightList = new ArrayList();
rightList = rightItemDao.findByParentId(parentId);
if (parentId.trim().equals("0")) {
request.setAttribute("rightList", rightList);
} else {
//以xml的格式输出节点信息
response.setHeader("Cache-Control", "no-cache");
response.setContentType("text/xml; charset=GBK");
String path = request.getContextPath()+"/rightItem.do?";
StringBuffer xmlString = new StringBuffer("<?xml version=\"1.0\" encoding=\"GBK\" ?><tree>");
for (int i = 0;i < rightList.size(); i ++) {
SRightItem rightItem = (SRightItem)rightList.get(i);
List childrenList = rightItemDao.findByParentId(rightItem.getId());
int nodeType = 0;//非叶子节点
if (childrenList.size() < 1) nodeType = 1;//叶子节点
if (nodeType == 0) {
xmlString.append("<tree text=\"");
xmlString.append(rightItem.getName());
xmlString.append("\" src=\"");
xmlString.append(path);
xmlString.append("flag=1&parentId=");
xmlString.append(rightItem.getId());
xmlString.append("\" action=\"javascript:doSelect('");
xmlString.append(rightItem.getId());
xmlString.append("')\" />");
} else if (nodeType == 1) {
xmlString.append("<tree text=\"");
xmlString.append(rightItem.getName());
xmlString.append("\" action=\"javascript:doSelect('");
xmlString.append(rightItem.getId());
xmlString.append("')\" />");
}
}
xmlString.append("</tree>");
try {
PrintWriter out = response.getWriter();
out.println(xmlString.toString());
// System.out.println(xmlString.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 根据ID信息获取菜单的其他信息并更新到页面的指定区域
* @param form
*/
public void getRightInfo(RightItemForm form) {
String id = form.getRightId();
SRightItemDAO dao = new SRightItemDAO();
dao.getSession().clear();
SRightItem item = dao.findById(id);
form.setRightId(item.getId());
form.setDescription(item.getDescription());
form.setLink(item.getLink());
// System.out.println("Name = "+item.getName());
form.setName(item.getName());
form.setStatus(item.getStatus());
}
/**
* 节点处理
* @param form
* @param request
* @param response
*/
public void dealItem(RightItemForm form,HttpServletRequest request, HttpServletResponse response) {
int flag = form.getFlag();
String rightId = form.getRightId();
if (rightId.trim().equals("")) {
rightId = "0";
}
String name = form.getName();
String link = form.getLink();
String description = form.getDescription();
String status = form.getStatus();
SRightItemDAO dao = new SRightItemDAO();
SRightItem item = null;
if (flag == 3) {
//增加同级节点
item = dao.findById(rightId);
String parentId = "";
if (item != null) {
parentId = item.getParentId();
} else {
parentId = "0";
}
item = new SRightItem(name,link,description,status,parentId);
dao.save(item);
if (rightId.trim().equals("0")) {
request.setAttribute("message", "增加顶级节点成功");
} else {
request.setAttribute("message", "增加同级节点成功");
}
} else if (flag == 4) {
//增加子节点
item = new SRightItem(name,link,description,status,rightId);
dao.save(item);
if (rightId.trim().equals("0")) {
request.setAttribute("message", "增加顶级节点成功");
} else {
request.setAttribute("message", "增加子节点成功");
}
} else if (flag == 5) {
//修改选中节点
item = dao.findById(rightId);
if (item != null) {
item.setDescription(description);
item.setLink(link);
item.setName(name);
item.setStatus(status);
request.setAttribute("message", "修改选中节点成功");
} else {
request.setAttribute("message", "选中的节点不存在");
}
} else if (flag == 6) {
//删除选中节点 -- 注这里应该同时删除所有子节点 或者节点有子节点时不允许删除
if (dao.findByParentId(rightId).size() > 0) {
request.setAttribute("message", "该节点还包含子节点不允许删除");
} else {
dao.delete(dao.findById(rightId));
request.setAttribute("message", "删除选中节点成功");
}
}
dao.getSession().flush();
dao.getSession().clear();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这是采用struts+hibernate作的一树形例子,这最大的特点就是,从后面读出数据时,是采用ajax读出后,再转成xml,再读出到页面的,可以说,是很不错的例子,有一定的参考价,因是采用hibernate作持久层,所以,数据库可以采用自已适用的,这例子上,只自带了一Oracle的,数据结构,你可以根据自已的需求,改成自已的数据库的表结构,如Mysql,sqlserver2000......
资源详情
资源评论
资源推荐
收起资源包目录
一树形例子 (221个子文件)
SJobDAO.class 7KB
SUserDAO.class 6KB
SArticleDAO.class 6KB
RightItemAction.class 6KB
SJobHistoryDAO.class 6KB
SUserAppendDAO.class 6KB
SRightItemDAO.class 6KB
DepartmentAction.class 6KB
SDomainDAO.class 6KB
SUserProjectDAO.class 6KB
SDepartmentDAO.class 6KB
SUserRightDAO.class 6KB
SRoleRightDAO.class 6KB
SJobTypeDAO.class 5KB
SRoleDAO.class 5KB
RoleAction.class 5KB
SUserRoleDAO.class 5KB
SProjectDAO.class 5KB
SArticleTypeDAO.class 5KB
MenuTree.class 5KB
AbstractSJob.class 5KB
PageListData.class 4KB
ProjectAction.class 4KB
AbstractSUser.class 3KB
AbstractSArticle.class 3KB
RoleForm.class 3KB
RightItemForm.class 3KB
LoginForm.class 3KB
ProjectForm.class 3KB
HibernateSessionFactory.class 2KB
AbstractSJobHistory.class 2KB
DepartmentForm.class 2KB
SetCharacterEncodingFilter.class 2KB
AbstractSRightItem.class 2KB
AbstractSUserAppend.class 2KB
AbstractSDomain.class 2KB
PageQuery.class 2KB
AbstractSRoleRight.class 1KB
AbstractSDepartment.class 1KB
AbstractSJobType.class 1KB
AbstractSUserRight.class 1KB
AbstractSUserProject.class 1KB
AbstractSRole.class 1KB
SJob.class 1KB
AbstractSProject.class 1KB
SArticle.class 1KB
SUser.class 1KB
AbstractSUserRole.class 1KB
LoginAction.class 1KB
SJobHistory.class 972B
AbstractSArticleType.class 883B
SRightItem.class 838B
SUserAppend.class 787B
SDepartment.class 737B
SRoleRight.class 736B
SJobType.class 726B
SProject.class 656B
SDomain.class 628B
SUserProject.class 600B
SUserRight.class 597B
SRole.class 578B
SUserRole.class 547B
BaseHibernateDAO.class 544B
SArticleType.class 519B
IBaseHibernateDAO.class 192B
.classpath 1KB
styles.css 2KB
xtree.css 732B
Thumbs.db 14KB
loading.gif 701B
RightItemAction.java 7KB
DepartmentAction.java 6KB
SJobDAO.java 6KB
RoleAction.java 5KB
MenuTree.java 5KB
SUserDAO.java 5KB
SArticleDAO.java 5KB
AbstractSJob.java 5KB
SJobHistoryDAO.java 4KB
SUserAppendDAO.java 4KB
SRightItemDAO.java 4KB
SDomainDAO.java 4KB
SUserProjectDAO.java 4KB
SDepartmentDAO.java 4KB
SRoleRightDAO.java 4KB
SUserRightDAO.java 4KB
SJobTypeDAO.java 4KB
SRoleDAO.java 4KB
SUserRoleDAO.java 4KB
SProjectDAO.java 4KB
SArticleTypeDAO.java 4KB
PageListData.java 4KB
ProjectAction.java 3KB
HibernateSessionFactory.java 3KB
AbstractSUser.java 3KB
RoleForm.java 3KB
AbstractSArticle.java 3KB
LoginForm.java 3KB
RightItemForm.java 3KB
ProjectForm.java 2KB
共 221 条
- 1
- 2
- 3
onewalkingman
- 粉丝: 15
- 资源: 44
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0