`
xxp3369
  • 浏览: 151395 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多
在做完机构管理的业务逻辑之后,下面考虑呈现层的实现。

1、
首先规划一下页面的流程,从规划中得到总体的概念,并根据这些总体概念创建ActionForm/Action以及相关的配置文件,
这一步的目的,是保证程序能够正常运行!

2、
依次逐步深入地实现各个功能,从简单到复杂


本项目中重点理解:

MVC模式下的参数传输
Struts异常处理方案


package com.bjsxt.oa.web;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ExceptionHandler;
import org.apache.struts.config.ExceptionConfig;

import com.bjsxt.oa.manager.SystemException;

public class SystemExceptionHandler extends ExceptionHandler {

	@Override
	public ActionForward execute(Exception ex, ExceptionConfig ae,
			ActionMapping mapping, ActionForm formInstance,
			HttpServletRequest request, HttpServletResponse response)
			throws ServletException {
		//
        ActionForward forward = null;
        ActionMessage error = null;

        // Build the forward from the exception mapping if it exists
        // or from the form input
        if (ae.getPath() != null) {
            forward = new ActionForward(ae.getPath());
        } else {
            forward = mapping.getInputForward();
        }
        
        //处理SystemException异常
        if(ex instanceof SystemException){
        	SystemException se = (SystemException)ex;
        	String key = se.getKey();
        	if(key == null){
        		error = new ActionMessage(ae.getKey(),se.getMessage());
        	}else{
        		if(se.getValues() != null){
        			error = new ActionMessage(key,se.getValues());
        		}else{
        			error = new ActionMessage(key);
        		}
        	}
        	
        	this.storeException(request, key, error, forward, ae.getScope());
        	
        	return forward;
        }
		
		return super.execute(ex, ae, mapping, formInstance, request, response);
	}

}



package com.bjsxt.oa.manager;

public class SystemException extends RuntimeException {
	private String key;
	private Object[] values;
	public String getKey() {
		return key;
	}
	public Object[] getValues() {
		return values;
	}
	public SystemException() {
		super();
	}
	public SystemException(String message, Throwable throwable) {
		super(message, throwable);
	}
	public SystemException(String message) {
		super(message);
	}
	public SystemException(Throwable throwable) {
		super(throwable);
	}
	
	public SystemException(String key,String message) {
		super(message);
		this.key = key;
	}
	
	public SystemException(String key,Object value,String message) {
		super(message);
		this.key = key;
		this.values = new Object[]{value};
	}
	
	public SystemException(String key,Object[] values,String message) {
		super(message);
		this.key = key;
		this.values = values;
	}
	
}



<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>
	<form-beans>
		<form-bean name="orgForm" type="com.bjsxt.oa.web.forms.OrgActionForm"></form-bean>
	</form-beans>
	<global-exceptions>
		<exception 
			path="/common/exception.jsp" 
			handler="com.bjsxt.oa.web.SystemExceptionHandler" 
			scope="request" 
			key="errors.detail" 
			type="java.lang.Exception">
		</exception>
	</global-exceptions>
	<global-forwards>
		<forward name="pub_add_success" path="/common/pub_add_success.jsp"></forward>
		<forward name="pub_del_success" path="/common/pub_del_success.jsp"></forward>
		<forward name="pub_update_success" path="/common/pub_update_success.jsp"></forward>
	</global-forwards>
	<action-mappings>
		<action 
			path="/org"
			type="org.springframework.web.struts.DelegatingActionProxy"
			name="orgForm"
			scope="request"
			parameter="method"
			
		>
			<forward name="index" path="/org/index.jsp"></forward>
			<forward name="add_input" path="/org/add_input.jsp"></forward>
			<forward name="update_input" path="/org/update_input.jsp"></forward>
		</action>
	</action-mappings>

    <message-resources parameter="MessageResources" />
</struts-config>



package com.bjsxt.oa.web.actions;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts.Globals;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.actions.DispatchAction;

import com.bjsxt.oa.manager.OrgManager;
import com.bjsxt.oa.model.Organization;
import com.bjsxt.oa.web.forms.OrgActionForm;

public class OrgAction extends DispatchAction {

	private OrgManager orgManager;
	
	/**
	 * 进入主界面
	 */
	@Override
	protected ActionForward unspecified(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		//
		
		OrgActionForm oaf = (OrgActionForm)form;
		int parentId = oaf.getParentId();
		List orgs = orgManager.searchOrgs(parentId);
		request.setAttribute("orgs", orgs);
		
		int ppid = 0;
		if(parentId != 0){
			Organization parent = orgManager.findOrg(parentId);
			if(parent.getParent() != null){
				ppid = parent.getParent().getId();
			}
		}
		request.setAttribute("ppid", ppid);
		
		return mapping.findForward("index");
	}
	
	/**
	 * 打开添加界面
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception
	 */
	public ActionForward addInput(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		
		return mapping.findForward("add_input");
	}

	//添加机构信息
	public ActionForward add(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		OrgActionForm oaf = (OrgActionForm)form;
		
		Organization org = new Organization();
		
		BeanUtils.copyProperties(org, oaf);
		
		orgManager.addOrg(org, oaf.getParentId());
		
		return mapping.findForward("pub_add_success");
	}
	
	public ActionForward del(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		OrgActionForm oaf = (OrgActionForm)form;
		int id = oaf.getId();

//		try{
			orgManager.delOrg(id);
//		}catch(Exception e){
			
//			ActionMessages msgs  = new ActionMessages();
//			
//			ActionMessage msg = new ActionMessage()
//			
//			msgs.add("m", msg);
			
			//传输的是普通消息
//			request.setAttribute(Globals.MESSAGES_KEY, msgs);
//			saveMessages(request, msgs);
			
			//传输的是错误消息
//			request.setAttribute(Globals.ERROR_KEY, msgs);
//			saveErrors(request, msgs);
//			
//			return mapping.findForward("org_exception");
//		}
		return mapping.findForward("pub_del_success");
	}	
	
	public ActionForward updateInput(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
			return mapping.findForward("update_input");
	}
	
	public ActionForward update(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
			return mapping.findForward("pub_update_success");
	}

	public void setOrgManager(OrgManager orgManager) {
		this.orgManager = orgManager;
	}
}


public.js


/*
 * 打开新窗口
 * f:链接地址
 * n:窗口的名称
 * w:窗口的宽度
 * h:窗口的高度
 * s:窗口是否有滚动条,1:有滚动条;0:没有滚动条
 */
function openWin(f,n,w,h,s){
	sb = s == "1" ? "1" : "0";
	l = (screen.width - w)/2;
	t = (screen.height - h)/2;
	sFeatures = "left="+ l +",top="+ t +",height="+ h +",width="+ w
			+ ",center=1,scrollbars=" + sb + ",status=0,directories=0,channelmode=0";
	openwin = window.open(f , n , sFeatures );
	if (!openwin.opener)
		openwin.opener = self;
	openwin.focus();
	return openwin;
}

/*
 * 打开删除窗口
 */
function openDeleteDialog(url,confirmString){
	var c = confirmString;
	if(c == null || c == ''){
		c = "你确认要删除记录吗?";
	}
	if(confirm(c)){
		return window.showModalDialog(url,"window123","dialogHeight:234px;dialogWidth:271px;resizable:no;help:yes;status:no;scroll:no");
	}
	return false;
}

/*
 * 删除记录
 */
function del(url,info){
	if(openDeleteDialog(url,info)){
		window.location.reload(true);
	}
}

/*
 * 校验checkbox
 */
function checkAll( chkName, checkboxName, pageSize ) {
    var src = event.srcElement;
	var chkN=eval("document.all."+chkName);

    if (src.checked) {
		chkN[0].checked = true;
		chkN[1].checked = true;
		for(var i=0; i<pageSize; i++) {
			var chk = eval("document.all." + checkboxName + i);
			if (chk) {
				chk.checked=true;
			}
    	}
    } else {
		chkN[0].checked = false;
		chkN[1].checked = false;
    	for(var i=0; i<pageSize; i++) {
			var chk = eval("document.all." + checkboxName + i);
			if(chk) {
				chk.checked=false;
			}
    	}
    }
}

/*
 * 
 */
function makePages(maxPage, selectedPage, selectName) {
	var sel=eval("document.all."+selectName);
	sel.length=0;
	for(var i=1; i<=maxPage; i++) {
		sel.options[i]=new Option(i,i);
		if(sel.options[i]==selectedPage) {
			sel.options[i].selected=true;
		}
	}
}

/*
 * 替换字符串
 */
function replaceStr( str ) {
    var re="/( )/gi";
    str = str.replace(re,"");
    re="/\</gi";
    str = str.replace(re,"&lt;");

    return str;
}

/*
 * 去掉左边空格
 */
function LTrim(str) {
    var whitespace = new String(" \t\n\r");
    var s = new String(str);
    if (whitespace.indexOf(s.charAt(0)) != -1) {
        var j=0, i = s.length;
        while (j < i && whitespace.indexOf(s.charAt(j)) != -1) {
           j++;
        }
        s = s.substring(j, i);
    }
    return s;
}

/*
 * 去掉右边空格
 */
function RTrim(str) {
    var whitespace = new String(" \t\n\r");
    var s = new String(str);
    if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
        var i = s.length - 1;
        while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1) {
            i--;
        }
        s = s.substring(0, i+1);
    }
    return s;
}

/*
 * 去掉两边空格
 */
function Trim(str) {
    return RTrim(LTrim(str));
}

/*
 *
 */
function exeOperation( exePath ){
    var obj = new ActiveXObject("Microsoft.XMLHTTP");
    obj.open("post",exePath,false);
    obj.send();
    var res = obj.responseText;
    var rs = Trim(res);
    if (rs.indexOf('true',0) != -1) {
    	return true;
    } else {
        return false;
    }
}

/*
 *
 */
function exeValidate( exePath ){
    var obj = new ActiveXObject("Microsoft.XMLHTTP");
    obj.open("post",exePath,false);
    obj.send();
    var res = obj.responseText;
    var rs = Trim(res);
    if (rs.indexOf('validate_login_user',0) != -1) {
    	return true;
    } else {
        return false;
    }
}

/*
 * 显示
 */
function validate_date( exePath ) {
	 var obj = new ActiveXObject("Microsoft.XMLHTTP");
     obj.open("post",exePath,false);
     obj.send();
     var res = obj.responseText;
     var rs = Trim(res);
	 var begin_str = "<!--begin-->";
	 var beginIndex = rs.indexOf(begin_str) + begin_str.length;
	 var endIndex   = rs.indexOf("<!--end-->");
	 rs = ((beginIndex >= 0) && (endIndex >= 0)) ? rs.substring(beginIndex,endIndex) : "";
	 return Trim(rs);
}

/*
 * 校验是否数字
 */
function checkNumber(name, TempS) {
	for(Count=0;Count<TempS.length;Count++) {
		TempChar=TempS.substring(Count,Count+1);
		RefString="0123456789";
		if (RefString.indexOf(TempChar,0)==-1) {
			alert("请输入数字");
			eval("document.all." + name).focus();
			return false;
		}
	}
}

/*
 * 是否有非法字符
 */
function chksafe(a){
	fibdn = new Array ("'" ,"\\");
	i=fibdn.length;
	j=a.length;
	for (ii=0; ii<i; ii++) {
		for (jj=0; jj<j; jj++) {
			temp1=a.charAt(jj);
			temp2=fibdn[ii];
			if (temp1==temp2){
				return false;
			}
		}
	}
	return true;
}

/*
 *
 */
function fucCheckNUM(NUM){
	var i,j,strTemp;
	strTemp="0123456789";
	if ( NUM.length== 0)  
		return false;
	for (i=0;i<NUM.length;i++) {
		j=strTemp.indexOf(NUM.charAt(i));
		if (j==-1){
			return false;
		}
	}
	return true;
}

/*
 *
 */
function fucCheckLength(strTemp) {
	var i,sum;
	sum=0;
	for(i=0;i<strTemp.length;i++) {
		if ((strTemp.charCodeAt(i)>=0) && (strTemp.charCodeAt(i)<=255)) {
			sum=sum+1;
		} else {
			sum=sum+2;
		}
	}
	return sum;
}

/*
 *
 */
function chkElements( name, errMsg, max_length, lengthMsg ) {
    var el_name = eval("document.all." + name);
	var v = el_name.value;
	if (!chksafe(v)) {
		el_name.focus();
		alert(errMsg);
		return false;
	} else if (fucCheckLength(v) > max_length) {
		el_name.focus();
		alert(lengthMsg);
		return false;
	}
	return true;
}

/*
 * 校验空字符串
 */
function checkNullStr(name, msg) {
	var el_name = eval("document.all."+name);
	if (Trim(el_name.value).length==0) {
		alert(msg);
		el_name.focus();
		return false;
	}
	return	true;
}

/*
 * 显示日期控件
 */
function GetDate(nText,para){
	var v_url = para=="1"?"./common/data.html":"../../common/data.html";
  	var reVal = window.showModalDialog(v_url, 'data',"status:no;center:yes;scroll:no;resizable:no;dialogWidth:255px;dialogHeight:260px");
  	if (reVal != null) {
		var n = eval("document.all." + nText);
		n.value=reVal;
  	}
}

/*
 * 按比例缩小图片
 */
function DrawImage(ImgD,iwidth,iheight){
	var flag=false;
	var image=new Image();
	image.src=ImgD.src;
	if(image.width>0 && image.height>0){
		flag=true;
		if(image.width/image.height>= iwidth/iheight){
			if(image.width>iwidth){ 
				ImgD.width=iwidth;
				ImgD.height=(image.height*iwidth)/image.width;
			}else{
				ImgD.width=image.width; 
				ImgD.height=image.height;
			}
//			ImgD.alt=image.width+"×"+image.height;
		}else{
			if(image.height>iheight){ 
				ImgD.height=iheight;
				ImgD.width=(image.width*iheight)/image.height; 
			}else{
				ImgD.width=image.width; 
				ImgD.height=image.height;
			}
//			ImgD.alt=image.width+"×"+image.height;
		}
	}
	ImgD.style.visibility = "visible";
} 

/*
 * 回车键转为Tab键
 */
function enterTab(){
	if(event.keyCode==13){
		oElement = document.activeElement;
		if(oElement.tagName != "TEXTAREA" && oElement.type != "button")
			event.keyCode=9;
		return ;
   	}
}

/*
 *
 */
function objectEval(text) {
    text = text.replace(/\n/g, " ");
    text = text.replace(/\r/g, " ");
    if (text.match(/^\s*\{.*\}\s*$/)) {
        text = "[" + text + "]";
    }
    return eval(text)[0];
}

/*
 * 打开领导查询页面
 * action	- 查询的Action
 * method	- 调用的方法
 * title	- 标题message
 * name		- 员工选择域的name
 */
function openLeaderQuery(action,method,title,name){
	openWin("../../common/selectStaff.jsp?action="+action+"&method="+method+"&title="+title+"&name="+name,"public_leader_find_page","400","150");
}

/*
 * 第一行变色
 */
function chgColor(){
	var v_table = document.all["PowerTable"];
	var v_row = v_table.rows[1];
	var len = v_row.cells.length;
	for(var i=0;i<len;i++){
		var v_cell = v_row.cells[i];
		v_cell.style.backgroundColor = "yellow";
	}
}

/*
 * 第一行变色
 */
function chgColor2(){
	var v_table = document.all["PowerTable"];
	var rows_count=v_table.rows.length;
	var v_row,v_cell,temp_len,len;
	var rowspan=0;
	
	//get rowspan
	if (v_table.rows.length > 1) {
		len = v_table.rows[1].cells.length;
		for (var r=2; r < rows_count; r++) {
			v_row = v_table.rows[r];
			temp_len = v_row.cells.length;
			if (temp_len==len) {
				rowspan=r-1;
				break;
			}
		}
		
		rowspan=(rowspan>0) ? (rowspan+1) : rows_count;		
		for(var r=1; r < rowspan; r++) {
			v_row=v_table.rows[r];
			for (var t=0; t < v_row.cells.length; t++) {
				v_cell = v_row.cells[t];
				v_cell.style.backgroundColor = "yellow";
			}
		}			
	}	
}

/*
 * 添加页面载入后触发的事件
 */
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof(window.onload) != "function") {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}
//adsName:名称,adsUrl:地址,sTime:时间(小时) add by wujie 2005.12.12
function PopAds(adsName,adsUrl,sTime,number,w,h,s)
{
	if(document.cookie.indexOf(adsName)==-1)
	{
		window.open(adsUrl,adsName);
		self.focus();
	            var expireDate = new Date();
	            var lefttime = 1000 * (3600 * sTime);
	            expireDate.setTime (expireDate.getTime() + lefttime);
	            document.cookie = adsName +"=yes" + "; expires=" + expireDate.toGMTString() +  ";";
	}
openWin(adsUrl,number,w,h,s);
}
document.onkeydown=enterTab;



<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@include file="/common/common.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<link href="style/oa.css" rel="stylesheet" type="text/css">
<script language="javascript" src="script/public.js"></script>
<title>添加机构信息</title>
</head>
<body>
<center>
<form action="org.do" method="post">
<TABLE class="tableEdit" border="0" cellspacing="1" cellpadding="0" style="width:580px;">
	<TBODY>
		<TR>
			<!-- 这里是添加、编辑界面的标题 -->
			<td align="center" class="tdEditTitle">添加机构信息</TD>
		</TR>
		<TR>
			<td>
			<!-- 主输入域开始 -->

<input type="hidden" name="method" value="add">
<input type="hidden" name="parentId" value="${orgForm.parentId }">
<table class="tableEdit" style="width:580px;" cellspacing="0" border="0" cellpadding="0">
	<tr>
		<td class="tdEditLabel" >机构名称</td>			
		<td class="tdEditContent"><input type="text" name="name">
		</td>
		<td class="tdEditLabel" >机构描述</td>			
		<td class="tdEditContent"><input type="text" name="description"></td>
	</tr>
</table>

			<!-- 主输入域结束 -->
			</td>
		</TR>
	</TBODY>
</TABLE>

<TABLE>
		<TR align="center">
			<TD colspan="3" bgcolor="#EFF3F7">
			<input type="submit" name="saveButton"
				class="MyButton" value="保存机构信息"> 
			<input type="button" class="MyButton"
				value="关闭窗口" onclick="window.close()">
			</TD>
		</TR>
</TABLE>
</form>
</center>
</body>
</html>



<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@include file="/common/common.jsp" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<link href="style/oa.css" rel="stylesheet" type="text/css">
<script language="javascript" src="script/public.js"></script>
<title>人员管理</title>
</head>
<BODY bgColor=#dee7ff leftMargin=0 background="" topMargin=0 marginheight="0" marginwidth="0">
<center>
      <TABLE width="778" border=0 cellPadding=0 cellSpacing=0 borderColor=#ffffff bgColor=#dee7ff style="FONT-SIZE: 10pt">
        <TBODY>
          <TR height=35>
            <TD align=middle width=20 background=images/title_left.gif 
          bgColor=#dee7ff></TD>
            <TD align=middle width=120 background=images/title_left.gif 
          bgColor=#dee7ff><FONT color=#f7f7f7> 机构管理<font color="#FFFFFF">&nbsp;</font></FONT> </TD>
            <TD align=middle width=11 background=images/title_middle.gif 
          bgColor=#dee7ff><FONT color=#f7f7f7>&nbsp;</FONT> </TD>
            <TD align=middle background=images/title_right.gif 
          bgColor=#dee7ff><FONT color=#f7f7f7>&nbsp;</FONT> </TD>
          </TR>
        </TBODY>
      </TABLE>
      <TABLE width="778" border=0 align=center cellPadding=0 cellSpacing=0 borderColor=#ffffff style="FONT-SIZE: 10pt">
        <TBODY>
          <TR>
            <TD width="82%" height=14 align=right vAlign=center noWrap>
            </TD>
            <TD width="18%" align=right vAlign=center noWrap> </TD>
          </TR>
          <TR>
            <TD height=14 align=right vAlign=center noWrap>
            	<!-- 在这里插入查询表单 -->
            </TD>
            <TD height=14 align="left" vAlign=center noWrap>
            <% 
            /**
            * 在这里定义“添加”,“查询”等按钮
            * <input type="image" name="find" value="find" src="images/cz.gif">
            * &nbsp;&nbsp;&nbsp;&nbsp; 
            * <a href="#" onClick="BeginOut('document.do?method=addInput','470')">
            * <img src="images/addpic.gif" border=0 align=absMiddle style="CURSOR: hand"></a>
            */
            %>
            <a href="#" onclick="openWin('org.do?method=addInput&parentId=${orgForm.parentId }','addperson',600,200);">添加机构信息</a>
            <a href="org.do?parentId=${ppid }">返回</a>
            </TD>
          </TR>
          <TR>
            <TD height=28 colspan="2" align=right vAlign=center noWrap background=images/list_middle.jpg>&nbsp;&nbsp;
            <!-- 可以在这里插入分页导航条 -->
            </TD>
          </TR>
        </TBODY>
      </TABLE>
      <table width="778" border="0" cellPadding="0" cellSpacing="1" bgcolor="#6386d6">
          <!-- 列表标题栏 -->
	      <tr bgcolor="#EFF3F7" class="TableBody1">
		      <td width="5%" height="37" align="center"><b>序号</b></td>
		      <td width="18%" height="37" align="center"><B>机构名称</B></td>
		      <td width="18%" height="37" align="center"><b>机构编号</b></td>
		      <td width="18%" height="37" align="center"><b>父机构名称</b></td>
              <td width="5%" height="37" align="center"><b>操作</b></td>
          </tr>
          <!-- 列表数据栏 -->
          <c:if test="${!empty orgs}">
          <c:forEach items="${orgs }" var="org">
	      <tr bgcolor="#EFF3F7" class="TableBody1" onmouseover="this.bgColor = '#DEE7FF';" onmouseout="this.bgColor='#EFF3F7';">
		      <td align="center" vAlign="center">${org.id }</td>
	          <td align="center" vAlign="center"><a href="org.do?parentId=${org.id }">${org.name }</a></td>
	          <td align="center" vAlign="center">${org.sn }</td>
	          <td align="center" vAlign="center">${org.parent.name }</td>
	          <td align="center" vAlign="center">
	          	<a href="#" onclick="del('org.do?method=del&id=${org.id }')">删除</a>
	          </td>
        </tr>
        </c:forEach>
		</c:if>
        <!-- 在列表数据为空的时候,要显示的提示信息 -->
	    <c:if test="${empty orgs}">
	    <tr>
	    	<td colspan="7" align="center" bgcolor="#EFF3F7" class="TableBody1" onmouseover="this.bgColor = '#DEE7FF';" onmouseout="this.bgColor='#EFF3F7';">
	    	没有找到相应的记录
	    	</td>
	    </tr>
	    </c:if>
      </table>
      <TABLE width="778" border=0 align=center cellPadding=0 cellSpacing=0 borderColor=#ffffff style="FONT-SIZE: 10pt">
        <TBODY>
          <TR>
            <TD height=28 align=right vAlign=center noWrap background=images/list_middle.jpg>&nbsp;&nbsp;
            <!-- 可以在这里插入分页导航条 -->
    		</TD>
          </TR>
        </TBODY>
      </TABLE>
</center>

</body>

</html>
分享到:
评论

相关推荐

    oa_03.rar OA管理系统

    这个名为"oa_03.rar"的压缩包文件很可能包含了一个简易的OA系统的源代码、配置文件、数据库脚本以及其他相关资源。下面将详细讨论OA管理系统的核心组件和常见功能,以及可能涉及到的技术栈。 OA系统通常由以下几个...

    oa简化版struts2+jdbc

    在这个"oa_03"中,可能包含了Struts2的配置文件、Action类、DAO实现、数据库连接配置、JDBC相关的SQL脚本等。分析和学习这些文件,可以深入理解Struts2如何处理请求,以及JDBC如何实现数据库操作。 总的来说,"oa...

    oa系统代码3.1

    压缩包文件"oa_gl_03_1"可能包含的是通达OA系统的一个特定版本或模块,如“OA-财务管理模块3.1”。这个模块可能包括了财务管理相关的功能,如账务处理、预算控制、财务报表等。具体的功能细节和使用方法需要进一步...

    西门子winccOA兼容性查询SIMATIC-WinCC-OA-compatibility-list-zh

    例如,提供的文件"SIMATIC-WinCC-OA_V3.19_compatibility-list_zh_2023-03-29.xlsx"和"SIMATIC-WinCC-OA_V3.18_compatibility-list_zh_2022-11-17.xlsx"分别对应了2023年3月29日和2022年11月17日的WinCC OA V3.19和V...

    通达OA破解补丁2016-9.10(2017-03-26制作)

    3、安装完,在OA服务管理器(MYOA\BIN\monitor.exe)中关闭所有OA服务,并退出服务控制器monitor.exe。 4、替换补丁中bin和webroot里的文件。直接复制粘贴就可以。 5、到D:\MYOA\BIN目录运行monitor.exe 并启动OA所有...

    oa系统代码3.2

    【oa_gl_03_2】这个文件名称可能暗示了这是一个关于“财务”或“管理”的模块,可能是系统中的财务管理或者企业管理部分的代码或配置文件,这部分可能涉及到财务审批流程、预算管理、成本分析等功能。 总结来说,...

    Java就业班OA项目实战培训视频【12讲】

    资源名称:Java就业班OA项目实战培训视频【12讲】资源目录:【】Java就业班OA项目实战01【】Java就业班OA项目实战02【】Java就业班OA项目实战03【】Java就业班OA项目实战04【】Java就业班OA项目实战05【】Java就业班...

    通达2013原版+破解版+OA精灵+IM1000用户补丁03

    绝对能用的通达OA2013版原版+破解版+OA精灵+IM1000用户补丁。 这是从麦枫和富阳上搜集的资料,汇总整合的。 现在好多破解版都不提供原版,以至于根本就不能用。本人经反复测试。这个绝对能用。 经过破解后,通达...

    通达OA2015破解版

    安装原版通达OA2015试用版,通达官网下载。 下载此破解补丁,解压并覆盖myoa/webroot,即可! 软件名称: Office Anywhere 2015版 皇冠集群版 对应版本的说明 版权所有: 北京通达信科科技有限公司 ...

    通达OA2015破解补丁

    安装原版通达OA2015试用版,通达官网下载。 下载此破解补丁,解压并覆盖myoa/webroot,即可! 软件名称: Office Anywhere 2015版 皇冠集群版 对应版本的说明 版权所有: 北京通达信科科技有限公司 ...

    测量公司OA系统(asp.net+Oracle)

    "2007-03-27.dmp"可能是Oracle数据库的导出文件,通常用于数据库备份或迁移。而"WebOA.rar"是一个压缩文件,可能包含OA系统的源代码、配置文件、静态资源等,开发者可以解压后进行系统部署或二次开发。 总的来说,...

    通达OA2010自动升级同步官方补丁-纯净完美版

    5、通达OA 精灵版本:最新版本号 2011-03-14(去除通达官方信息及链接,已封装,安装即可) 6、守护服务程序:最新版本号 2010-12-16 7、通达报表组件版本3.0完美zcj,同时考虑到有些OA版本原因,特免费赠送“通达...

    通达2013原版+破解版+OA精灵+IM1000用户补丁01

    绝对能用的通达OA2013版原版+破解版+OA精灵+IM1000用户补丁。 这是从麦枫和富阳上搜集的资料,汇总整合的。 现在好多破解版都不提供原版,以至于根本就不能用。本人经反复测试。这个绝对能用。 经过破解后,通达...

    通达OA2010 3.6.110801破解补丁-纯净版(请紧急替换早期版本)

    5、 定时任务服务版本:最新版本号 2010-12-03补丁 6、 守护服务程序:最新版本号 2010-12-16 7、 通达服务控制中心及自动配置程序:最新版本号 2010-12-16 8、 通达手机短信服务器2010版:最新版本号 2011-05-23...

    通达OA2010 3.6.110712 补丁自动升级-纯净版

    5、 定时任务服务版本:最新版本号 2010-12-03补丁 6、 守护服务程序:最新版本号 2010-12-16 7、 通达服务控制中心及自动配置程序:最新版本号 2010-12-16 8、 通达手机短信服务器2010版:最新版本号 2011-05-23...

    北大青鸟 Accp 5.0 电子课件 Y2 HR CRM OA B2C毕业设计项目开发(HR CRM OA B2C Project).part03.rar

    北大青鸟 Accp 5.0 电子课件 Y2 HR CRM OA B2C毕业设计项目开发(HR CRM OA B2C Project) 共计15个压缩包,需要全部下载才能解压.

    C:\Users\Zydx\Desktop\泛微e-cology OA系统远程代码执行批量检测脚本.py

    泛微e-cology OA系统远程代码执行批量检测脚本泛微e-cology OA系统远程代码执行批量检测脚本

    通达OA2010 3.6 110408 补丁(OA补丁+zcj+报表+IM+精灵+Zlchat补丁)

    5、通达OA 精灵版本:最新版本号 2011-03-14(去除通达官方信息及链接,已封装,安装即可) 6、守护服务程序:最新版本号 2010-12-16 7、通达报表组件版本3.0完美zcj,同时考虑到有些OA版本原因,特免费赠送“通达...

    通达OA2010 3.6.110712补丁1

    5、 定时任务服务版本:最新版本号 2010-12-03补丁) k) 6、 守护服务程序:最新版本号 2010-12-16 7、 通达服务控制中心及自动配置程序:最新版本号 2010-12-16 8、 通达手机短信服务器2010版:最新版本号 2011-05-...

    通达OA2010 3.6.110428 破解补丁纯净版-自动升级

    5、 定时任务服务版本:最新版本号 2010-12-03补丁 6、 守护服务程序:最新版本号 2010-12-16 7、 通达服务控制中心及自动配置程序:最新版本号 2010-12-16 8、 通达手机短信服务器2010版:最新版本号 2011-01-17...

Global site tag (gtag.js) - Google Analytics