项目总结——从零开始

来源:互联网 发布:女朋友 礼物 知乎 编辑:程序博客网 时间: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">[&nbsp;<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">[&nbsp;<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下,和重启,部署上最新改后的代码,不然的话就会改了代码以后,跑的还是以前旧的代码