??xml version="1.0" encoding="utf-8" standalone="yes"?> XWork配置文g是以“xwork”命名?/span>.xml文gQ它必需攑ֈc\径(classPathQ的根目录, Web应用一般放?/span>classes目录中,它需要遵?/span>DTD的规范(现在?/span>xwork-1.0.dtdQ。这个文件定义了我们?/span>ActionQ?/span>InterceptorQ?/span>Result的配|和怺之间的映。下面我们看看用h册的完整XWork配置文gQ?/span> <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd"> <xwork> <include file="webwork-default.xml"/> <package name="example" extends="webwork-default"> <action name="register" class="example.register.RegisterAction" > <result name="success" type="dispatcher"> <param name="location">/register-result.jsp</param> </result> <interceptor-ref name="params"/> </action> <action name="registersupport" class="example.register.RegisterActionSupport" > <result name="success" type="dispatcher"> <param name="location">/register-result.jsp</param> </result> <result name="input" type="dispatcher"> <param name="location">/registerSupport.jsp</param> </result> <interceptor-ref name="validationWorkflowStack"/> </action> </package> </xwork> XworkQ?/span>xwork配置文g的所有内容,都是定义?/span><xwork>标签中,它的直接子标{有<package>?/span><include>?/span> PackageQ?/span>我们?/span>ActionQ?/span>InterceptorQ?/span>Result都是在此标签中定义?/span><package>标签有一个必需的属?#8220;name”Q它用来标识唯一的一?/span>package。属?#8220;extends”是可选的Q它用来l承前面定义的一个或一个以?/span>package配置信息Q包括所有的interceptor?/span>interceptor-stack?/span>action的配|信息。注意,配置文g按文档的序Q由上向下执行,因此Q用“extends”引用?/span>package必需在引用之前定义。属?#8220;sbstract”是可选的Q它用来讄package为抽象的packageQ它可以被承同时它?/span>Action配置信息在运行时不可见?/span> 属?/span>namespace也是可选的Q它用来分隔不同package定义?/span>actionQ让q些action处于不同的命名空_namespacesQ。这P我们不同?/span>package可以有相同的action命名Q因为可以通过命名I间来区分。如果不指定namespaceQ默认的是空字符丌Ӏ命名空间也可以被用在安全控制方面,它可以根据不同的命名I间指定不同的访问权限?/span>
?/span> ?/span> 是否必需 ?/span> q?/span> name ?/span> 用来标识package的名U?/span> extends ?/span> l承它所扩展?/span>package配置信息 namespace ?/span> 指定package的命名空_默认?/span>”” abstract ?/span> 声明package是抽象的xwork.xml文g的标{օ?/span>
Result-typeQ?/span>用来定义输出l果cd?/span>ClassQ它用简单的名-值对来定义。当Ӟ我们自己写的输出l果cd也必需在这里定义。例如:
<result-type name="dispatcher" class="com.opensymphony.webwork.dispatcher.ServletDispatcherResult" default="true"/>Q?/span>default="true"表示如果?/span>Action?/span>result中不指定result-typeQ就使用q个默认?/span>result-type?/span>
InterceptorsQ?/span>它是一个简单的<interceptors> <interceptors/>标签Q我们的interceptor?/span>interceptor-stack都在此标{ֆ定义?/span>
InterceptorQ?/span>当然Q就是用来定义我们的拦截器。它的定义非常简单,名-值对的Ş式。例如:<interceptor name="timer" class="com.opensymphony.xwork.interceptor.TimerInterceptor"/>。在action中,可以通过<interceptor-ref />来直接引用前面定义了的拦截器?/span>
Interceptor-stackQ?/span>用来上面定义的interceptorl织成堆栈的形式Q这h们就可以创徏一l标准的interceptorQ让它按照顺序执行。在我们?/span>Action中直接引用这?/span>interceptor堆栈可以了Q不用逐个interceptord用?/span>
例如Q?/span>
<interceptor-stack name="validationWorkflowStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack>
Interceptor ParamQ我们的interceptor是在ActionConfigU别被实例化和存储的Q也是说一?/span>Action引用的每?/span>interceptor都会有相应的实例。这P我们在定义和引用interceptor的时候都可以为它讄相应的参数倹{例如:
<interceptor name="test" class="com.opensymphony.xwork.TestInterceptor">
<param name="foo">expectedFoo</param>
</interceptor>
?/span>Action?/span>Interceptor-stack中引用时也可以设|参敎ͼ例如Q?/span>
<interceptor-ref name="test">
<param name="expectedFoo">expectedFoo</param>
</interceptor-ref>
注意Q在Action引用的时候,如果引用的是Interceptor-stackQ则不允许设|参敎ͼ否则会报错?/span>
Global-resultsQ?/span>它允许我们定义全局的输出结果(global resultQ,比如登陆面、操作错误处理页面。只要承它所在的packageQ这些输出结果都是可见的?/span>
例如Q?/span>
<global-results>
<result name="login" type="dispatcher">
<param name="location">/login.jsp</param>
</result>
<result name="error" type="dispatcher">
<param name="location">/error.jsp</param>
</result>
</global-results>
如果我们?/span>Action执行完返?#8220;login”Q它调用上面的q个输出l果Q将输出zN到根目录下的login.jsp面?/span>
ActionQ?/span>用来配置Action的名UͼnameQ和它对应的Class。我们将通过q个Action的名U和它所?/span>package?/span>namespace去配|文件中取得q个Action的配|信息。它可以通过<param>来设|参敎ͼAction在执行的时候会取得配置文g里设|的参数Q通过拦截?/span>StaticParametersInterceptorQ?/span>
Action可以配置一个或多个输出l果(result)。一个输出结果的名称Q对应于Action执行完成q回的字W串?/span><result>标签?/span>type属性,对应我们前面定义q的result-typeQ说?/span>reslut的类型。例如:
<action name="register" class="example.register.RegisterAction" >
<result name="success" type="dispatcher">
<param name="location">/register-result.jsp</param>
</result>
<interceptor-ref name="params"/>
</action>
当然Q我们的Action用到的拦截器也是在这里配|的Q通过<interceptor-ref>标签Q属?#8220;name”的|对应前面定义?/span>interceptor?/span>interceptor-stack?/span>如果Action中没有用<interceptor-ref>标签指定拦截器,它将使用默认?/span><default-interceptor-ref>标签定义的拦截器?/span>
IncludeQ?/span>xwork..xml文g可以被分成好几个不同的文Ӟxwork..xml通过<include>标签引用被包含的文gQ例如:<include file="webwork-default.xml"/>。被包含的文件必需?/span>package标签里的内容Q我们看?/span><include>标签在配|文仉的位|就知道了。如果要l承被包含文件的packageQ我们必需?/span><include>标签攑֜其上面,因ؓ配置文g是按照由上而下的顺序解析的?br>---转脓
.dtree {//定义目录树节点的字体Q字P颜色
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #006600;
white-space: nowrap;
}
.dtree img {//定义选用节点图标的样式,位置
border: 0px;
vertical-align: middle;
}
.dtree a {//
color: #006600;
text-decoration: none;
}
.dtree a.node, .dtree a.nodeSel {
white-space: nowrap;//表格随着文字自动伸展Q如果未讄TD宽度Q则noWrap属性是起作用的Q如果设|了TD宽度Q则noWrap属性是不v作用的。)
padding: 0px 0px 0px 0px;
}
.dtree a.node:hover, .dtree a.nodeSel:hover {
color: #006600;
text-decoration: none;
}
.dtree a.nodeSel {//节点选中后的节点背景颜色
background-color: #c0d2ec;
}
.dtree .clip {
overflow: hidden;
}
二:tree.css
body {SCROLLBAR-FACE-COLOR:#D2FFD2;
SCROLLBAR-HIGHLIGHT-COLOR: #8AA583;
SCROLLBAR-SHADOW-COLOR: #8AA583;
SCROLLBAR-3DLIGHT-COLOR: #ffffff;
SCROLLBAR-ARROW-COLOR: #8AA583;
SCROLLBAR-TRACK-COLOR: #E1FFE1;
SCROLLBAR-DARKSHADOW-COLOR: #ffffff;
background-attachment: fixed;
//scroll : 背景囑փ是随对象内容滚动
//fixed : 背景囑փ固定
background-repeat: no-repeat;
//background-repeat : repeat | no-repeat | repeat-x | repeat-y
//repeat : 背景囑փ在纵向和横向上^?/p>
//no-repeat : 背景囑փ不^?/p>
//repeat-x : 背景囑փ在横向上q铺
//repeat-y : 背景囑փ在纵向^?/p>
background-color: EFF7F7;
}
Dtree目录树的ȝ
一Q函?Q页面中tree.add(id,pid,name,url,title,target,icon,iconOpen,open);参数说明Qid Q节点自w的idpid Q节点的父节点的idname Q节ҎC在面上的名称url Q节点的链接地址title Q鼠标放在节点上所出现的提CZ息target Q节炚w接所打开的目标frameQ如框架目标mainFrame或是_blank,_self之类Qicon Q节点关闭时的显C图片的路径iconOpenQ节Ҏ开时的昄囄的\径open Q布型Q节Ҏ否打开Q默认ؓfalseQ注Qopen:节点一般采用trueQ即pid是-1的节?Qdtree.js文g中约87Q?13行是一些默认图片的路径Q注意要指对。二Q页面中的书?Q默认值的书写规则Q从左至叻I依次省略Q即 tree.add(id,pid,name,url);后面5个参数可以省?Q有间隔时的默认|如存在第6个参敎ͼ但第5个参数想用默认|?tree.add(id,pid,name,url,"",target);必须q样写其?tree.add(id,pid,name,url,"","","","",true);3Q样式表Q?Q:可以dtree.css中的样式附加C的应用中的主css中,如a.cssQ?Q:也可以同时引用dtree.css与a.css两个文gQ但前提条g是两个css文g中不能有重复的样?lt;link href="/jingjindatabase/pub/css/a.css" rel="stylesheet" type="text/css" />
<link href="/jingjindatabase/pub/css/dtree.css" rel="stylesheet" type="text/css" />
4Q页面代码书写的位置是:一般写在表格的td之中<script type="text/javascript" src="/myMobanGis/pub/js/dtree.js"></script>
<script type="text/javascript">
tree = new dTree('tree');
tree.add("1","-1","京|","","","","","",true);
tree.add("11","1","A","","","","","",true);
tree.add("110","11","A-1","content.jsp?moduleName=XXX","","mainFrame");
tree.add("111","11","A-2","javascript:void(0)","","链接在哪里显C?);
tree.add("112","11","A-3","javascript:void(0)","","mainFrame");
tree.add("113","11","A-4","/.jsp","","mainFrame");
tree.add("114","11","A-5","/.jsp","","mainFrame");
tree.add("115","11","A-6","/.jsp","","mainFrame");
tree.add("12","1","B","","","","","",true);
tree.add("121","12","B-1","javascript:调用本页内的js函数","","mainFrame");
tree.add("122","12","B-2");tree.add("13","1","C","","","","","",true);
tree.add("131","13","C-1","javascript:void(0)","","mainFrame");
tree.add("132","13","C-2","javascript:void(0)","","mainFrame");
tree.add("133","13","C-3","javascript:void(0)","","mainFrame");tree.add("14","1","D","","","","","",true);
tree.add("141","14","D-1","javascript:void(0)","","mainFrame");
document.write(tree);
</script>
说明Q这是静态的代码Q动态的可用循环加入?
三:css文g的注?/p>
1:dtree.css
.dtree {//定义目录树节点的字体Q字P颜色
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #006600;
white-space: nowrap;
}
.dtree img {//定义选用节点图标的样式,位置
border: 0px;
vertical-align: middle;
}
.dtree a {//
color: #006600;
text-decoration: none;
}
.dtree a.node, .dtree a.nodeSel {
white-space: nowrap;
padding: 0px 0px 0px 0px;
}
.dtree a.node:hover, .dtree a.nodeSel:hover {
color: #006600;
text-decoration: none;
}
.dtree a.nodeSel {
background-color: #c0d2ec;
}
.dtree .clip {
overflow: hidden;
}
原脓地址http://blog.sina.com.cn/u/4ae9618f010006y3