项目总结——从零开始
来源:互联网 发布:女朋友 礼物 知乎 编辑:程序博客网 时间:2024/06/05 03:59
1.安装好svn后,如果要在本地把项目从svn下载下来,直接创建一个文件夹,然后点击svn checkout,弹出一个框以后,在url of repository 中写入服务器地址,点击OK,就能把项目给下下来。
2.如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。那么当在一个iframe中,想调用主页面的方法,或者主页面的元素时,可以通过window.parent来获得,例如我的blank.jsp中,就用到了window.parent.showDocList(uuid,null);——这是获取方法。 window.parent.$("#catalogTree").jstree("refresh");——这是获取元素。
3.学习了如何自定义标签:
项目中用到了自定义标签,一直没弄的非常清楚,现在只是知道怎么去写,一些基本原理算是清楚了:
首先是定义好配置文件jump-tags.tld,比如我现在要定义一个ActionButton标签,那么我要定义标签的一些属性如下:
<tag>
<description></description>
<name>ActionButton</name>
<tag-class>com.jtec.jump.web.tag.ActionButtonTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>id</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>loginUserExp</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>permissionCode</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>text</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>isMultiAction</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>isSimpleAction</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>actionURL</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>confirmStr</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>windowOpen</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>theWidth</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>theHeight</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>theOther</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>isPrompt</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>prompt</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>promptVar</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>iconURL</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>judgeFunc</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>endFunc</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<dynamic-attributes>false</dynamic-attributes>
</tag>
在tag包中定义ActionButtonTag类中定义相应标签的属性,并写get和set方法。然后将相应的valuestack传人ActionButtonComponent类中。
整个原理基本是:在页面中写<%@ taglib prefix="jump" uri="/jump-tags"%>将自定义标签引进页面,然后在页面中写入相应属性的值,通过ActionButtonTag中定义的get和set方法,得到标签的属性值,然后传入到ActionButtonComponent类钟,在ActionButtonComponent类中找到相应的模板。例如private String templateName = "ActionButton.vm";
将相应的值写入模板中mergeTemplateIntoString(templateName, model, writer);模板中通过${theWidth}, ${iconURL}拿到相应的属性值生成标签,下面是模板的一段代码:
#if(${iconURL} && ${iconURL}!="")
#if(${endFunc} && ${endFunc}!="")
<span class="styleActionButtonFont"><a id='${id}' href="#" onclick="return ${endFunc}(doButtonAction('${isMultiAction}','${isSimpleAction}','${actionURL}','${confirmStr}','${windowOpen}','${width}','${height}','${isPrompt}','${prompt}','${promptVar}','${theOther}','${judgeFuncStr}'));"><img src="${iconURL}" border="0" style="vertical-align:middle;" alt="${text}" title="${text}"/>${text}</a></span>
#else
<span class="styleActionButtonFont"><a id='${id}' href="#" onclick="return doButtonAction('${isMultiAction}','${isSimpleAction}','${actionURL}','${confirmStr}','${windowOpen}','${width}','${height}','${isPrompt}','${prompt}','${promptVar}','${theOther}','${judgeFuncStr}');"><img src="${iconURL}" border="0" style="vertical-align:middle;" alt="${text}" title="${text}"/>${text}</a></span>
#end
#else
#if(${endFunc} && ${endFunc}!="")
<span class="styleActionButtonFont">[ <a id='${id}' href="#" onclick="return ${endFunc}(doButtonAction('${isMultiAction}','${isSimpleAction}','${actionURL}','${confirmStr}','${windowOpen}','${width}','${height}','${isPrompt}','${prompt}','${promptVar}','${theOther}','${judgeFuncStr}'));">${text}</a>]</span>
#else
<span class="styleActionButtonFont">[ <a id='${id}' href="#" onclick="return doButtonAction('${isMultiAction}','${isSimpleAction}','${actionURL}','${confirmStr}','${windowOpen}','${width}','${height}','${isPrompt}','${prompt}','${promptVar}','${theOther}','${judgeFuncStr}');">${text}</a>]</span>
#end
#end
4.每次mvn了以后,要把properties下的java build path下的source中的bin给删了,然后在重新clean下,和重启,部署上最新改后的代码,不然的话就会改了代码以后,跑的还是以前旧的代码
- 项目总结——从零开始
- 项目总结——从零开始
- 项目总结—从零开始(3)
- 项目总结—从零开始(4)
- 项目总结—从零开始(5)
- 项目总结—从零开始(6)
- Android——从零开始写一款开源项目
- 从零开始学JAVA WEB(2)——项目选取
- 从零开始—我的开源项目3:项目需求及设计
- java——从零开始
- UE——从零开始
- 从零开始高阶.Net Mvc5 EF6 WebApi2 Angular2项目开发(Ch01——1)
- 从零开始高阶.Net Mvc5 EF6 WebApi2 Angular2项目开发(Ch01——2)
- 【工作笔记】从零开始学ExtJs6(一)——构建项目
- 【工作笔记】从零开始学ExtJs6(一)——构建项目
- 从零开始—我的开源项目4:代码完善(上)
- 从零开始—我的开源项目5:代码完善(中)
- 从零开始—我的开源项目6:代码完善(下)
- 如何管理不同的密码解决方案
- iphone开发必读的十二篇文章
- javascript解析XML生成树形结构(兼容Firefox,IE9)
- 手机产品设计中的反馈提示
- ActiveMQ 安装(linux)
- 项目总结——从零开始
- VC获取掩码
- C++真的能够王者归来吗?
- Ping过程详解
- Linux学习
- JAVA应用技术之编码规范(codetemplate,checkstyle)
- ibatis命名空间
- JDK1.7安装与配置图解
- JAVA应用技术之服务器搭建