1.用Tomcat发布网站
由于以前都是学微软的东西,只会在IIS上发布,没接触过Tomcat,所以对于Java体系我还是菜鸟一个,今天用Tomcat第一次发布了网站,记录一下。
我要发布的网站的路径如下所示:
在Tomcat配置文件夹apache-tomcat-6.0.20->conf下有一个server.xml配置文件,打开该文件,找到文件最末端的</Host>,然后在其上方加入
<Context path="/MySite" docBase="E:\work\geoq\project\SiteSelection\WebContent" />,其中path表示虚拟目录,docBase表示虚拟 目录所映射的物理路径,然后通过apache-tomcat-6.0.20->bin下的startup批处理文件就可以手动启动Tomcat,手动启动成功后这样就可以通过http://localhost:8080/MySite来访问发布的网站了。
2.在书写<div></div>格式时,不要写成<div />这种形式,有可能发生错误。
3.在判断某项属性是否存在时,要使用a.b == undefined的形式,不要使用a.b == "undefined"
4.在使用dojo设置样式时,要写成这种形式dojo.style(domNode,"height","50px"); 最后不能写成数字
5.移除字符串str中的回车符,可以使用.replace(String.fromCharCode(13),"")
6.dojo小部件的postCreate中不能访问子小部件,但是可以再startup中访问
7.通过CSS设置字体垂直居中时,设置的是line-height而不是inline-height,没有inline-height这个样式属性
8.已知attributes={},name="姓名",value="iSpring",如果想让attributes增加一个"姓名"属性,其值为“iSpring”,可以通过这样设置attributes[name]=value,不要写成attributes.name = value否则会变成{name:"iSpring"}
9.自定义一个widget:SettingTool,该widget继承了dijit._Widget, dijit._Templated, dijit._Container, dijit._Contained,该SettingTool的模板文件是一个<div></div>,该<div></div>内部是一个标记的TabContainer,TabContainer中又有几个ContentPane作为Tab,用js代码创建一个SettingTool并将其加入到一个dijit.Dialog中,结果Dialog中的内容显示不正确,解决这一问题的方法是:在TabContainer中加入以下内容doLayout="false" controllerWidget="dijit.layout.TabController"。SettingTool的模板文件如下:
<div class="settingToolContainer"> <div dojoAttachPoint="mainTabContainer" id="mainTabContainer" dojoType="dijit.layout.TabContainer" doLayout="false" controllerWidget="dijit.layout.TabController"> <div id="tab1" dojoType="dijit.layout.ContentPane" title="语言"> <div style="text-align: center;"> <input name="language" type="radio" checked="true" />中文 <input name="language" type="radio" />English </div> </div> <div id="tab2" dojoType="dijit.layout.ContentPane" title="线符号"> <table> <tr> <td> <label>宽度:</label> </td> <td> <input dojoAttachPoint="lineWidth" type="text" value="2"/> </td> </tr> </table> </div> </div> </div>
10.domNode.addEventListener('webkitAnimationEnd', AnimationEnd, false);用这种方式为CSS3动画添加回调函数
11.在ArcGIS JS API中可以通过map.container访问承载map的div
12.a.odd表示className为odd的a节点
13.有时候使用dojo.dnd.Moveable创建自定义的可以移动的widget的时候, 如果里面有滚动条,那么只要一单击滚动条就使得小部件的移动不受控制。此时可以考虑用dojox.layout.FloatingPane作为替代。在GeoWeb2.0 P61,Chapter02\Sample2-1\content_panes.htm
14.用连续空格拆分字符串
var str="Is this all there is?";
var patt1=/\s+/g;
str.split(patt1);
["Is", "this", "all", "there", "is?"]
s+表示一连串的空格
15.在开发dojo小部件的时候,如果在模板文件的某个dom节点要包含图片,那么一定要注意图片的路径,图片的路径最好通过dojo.moduleUrl来设置,类似于用dojo.moduleUrl设置templatePath,具体设置代码如下:
path = dojo.moduleUrl("gistech.widgets.layersMapsControl","images/right_arrow.png").path; dojo.style(icon,"background","url("+path+")");需要注意的是,dojo.moduleUrl返回的不是字符串,而是object,需要通过返回值的path属性得到字符串路径。在dojo1.6中还可以使用dojo.moduleUrl,从dojo1.7开始dojo.moduleUrl被require.toUrl取代,详见 http://dojotoolkit.org/reference-guide/1.7/dojo/moduleUrl.html
16.Dojo提供了两种方法来删除节点:dojo.destory会删除一个节点和其所有的子节点,而dojo.empty将只删除一个节点的子节点。这两种方法都接受一个DOM节点或是一个节点的ID作为参数。
17.利用dojo.create创建domNode
dojo.create("li", { innerHTML: "Seven", className: "seven", style: { fontWeight: "bold" } }, list);
18.">". CSS中使用">"并不被所有浏览器支持,但是在dojo.query中却可以通用.
// 获取任意一个有li节点作为其父节点的a节点
var allA = dojo.query("li a");
// 获取任意一个有li节点作为其直接父节点的a节点
var someA = dojo.query("li > a");
19.
dojo.addClass(node, "red");
dojo.query(".odd").addClass("red");
其他dojo.NodeList的DOM操作方法还包括: style, toggleClass,replaceClass, place 和empty.所有这些方法都会返回dojo.NodeList,供串联使用.
20.postCreate是widget中的方法,如果不是widget,那么不会有此方法
21.Uncaught Could not load cross-domain resources: iSpring.widgets.son.Son
无法加载dojo小部件的几个可能的原因:
a.dojo.provide、dojo.require、dojo.declare、_module可能会将小部件的名字写错,要仔细检查,比如讲iSpring写成了iSpirng
b.没有正确继承父类,检查dojo.declare中所应该集成的父类
c.没有正确设置好模板文件导致的,比如将templateStirng写成了templateStirng