<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_dirl 站 lotus世界</title><subtitle type="text">发展是硬道理，学习是必由之路</subtitle><id>http://feed.cnblogs.com/blog/u/47907/rss</id><updated>2012-02-01T02:37:54Z</updated><author><name>hannover</name><uri>http://www.cnblogs.com/hannover/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hannover/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/47907/rss"/><entry><id>http://www.cnblogs.com/hannover/archive/2012/02/01/2334201.html</id><title type="text">What is the Difference Between Type and Class in</title><summary type="text">A detailed description of both Types and Classes is below.Problem:What is the difference between a Type and a Class in LotusScript?Solution:A detailed description of both Types and Classes is below.I. TYPESIn LotusScript, data types can be defined with data members (variables) that can be manipulat.</summary><published>2012-02-01T02:38:00Z</published><updated>2012-02-01T02:38:00Z</updated><author><name>hannover</name><uri>http://www.cnblogs.com/hannover/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hannover/archive/2012/02/01/2334201.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hannover/archive/2012/02/01/2334201.html"/><content type="html">&#xD;
 &#xD;
&lt;div id="blog_text" &gt;&lt;font size="2"&gt;&lt;span style="font-size: 10px;"&gt;&lt;em&gt;A &lt;br /&gt;detailed description of both Types and Classes is &lt;br /&gt;below.&lt;/em&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/font&gt;&lt;span style="font-size: 10px;"&gt;&lt;font size="2"&gt;Problem:&lt;br /&gt;What is the difference between a Type and a Class in &lt;br /&gt;LotusScript?&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;A detailed description of both Types and &lt;br /&gt;Classes is below.&lt;br /&gt;&lt;br /&gt;I. TYPES&lt;br /&gt;&lt;br /&gt;In LotusScript, data types can be &lt;br /&gt;defined with data members (variables) that &lt;br /&gt;can be manipulated as a &lt;br /&gt;single&lt;br /&gt;unit. Types can be used to build a record structure to store database &#xD;
records &lt;br /&gt;within LotusScript.&lt;br /&gt;&lt;br /&gt;A type is defined with the TYPE...END &lt;br /&gt;TYPE statement. Within this statement, &lt;br /&gt;the type members are&lt;br /&gt;declared &lt;br /&gt;(without the DIM statement).&lt;br /&gt;&lt;br /&gt;For example, to declare a type named &lt;br /&gt;OrderInfo, with the members ID (a &lt;br /&gt;fixed-length string),&lt;br /&gt;CustomerName (a &#xD;
variable length string) and TotalPrice (a currency value); the &lt;br /&gt;following &lt;br /&gt;statements could be&lt;br /&gt;used:&lt;br /&gt;&lt;br /&gt;TYPE OrderInfo&lt;br /&gt;ID AS STRING * &lt;br /&gt;6&lt;br /&gt;CustomerName AS STRING&lt;br /&gt;TotalPrice AS CURRENCY&lt;br /&gt;END TYPE&lt;br /&gt;&lt;br /&gt;After &lt;br /&gt;declaring a type, a variable can be declared of this type, just as a &lt;br /&gt;&lt;br /&gt;variable could be declared of a built-in&lt;br /&gt;data type. For example, to &lt;br /&gt;declare a variable to contain a single order:&lt;br /&gt;&lt;br /&gt;DIM OrderVariable AS &lt;br /&gt;OrderInfo&lt;br /&gt;&lt;br /&gt;A fixed array of 10 orders can also be declared:&lt;br /&gt;&lt;br /&gt;DIM &lt;br /&gt;OrderArray (10) AS OrderInfo&lt;br /&gt;&lt;br /&gt;Each of the ten elements of this array is an &lt;br /&gt;instance of the OrderInfo type. &lt;br /&gt;Each of these instances includes&lt;br /&gt;one of &lt;br /&gt;each type member:&lt;br /&gt;&lt;br /&gt;ID&lt;br /&gt;CustomerName&lt;br /&gt;TotalPrice&lt;br /&gt;&lt;br /&gt;Members of a &#xD;
type can have any built-in data type to another user-defined type; &lt;br /&gt;however, &lt;br /&gt;a type member&lt;br /&gt;cannot contain an instance of itself.&lt;br /&gt;&lt;br /&gt;Use Dot Notation &lt;br /&gt;to refer to a member of a type variable. For example, in the &lt;br /&gt;type defined &lt;br /&gt;above, the&lt;br /&gt;members of the instance OrderVariable can be accessed as &lt;br /&gt;follows:&lt;br /&gt;&lt;br /&gt;DIM OrderVariable AS OrderInfo&lt;br /&gt;OrderVariable.ID = &lt;br /&gt;"001"&lt;br /&gt;OrderVariable.CustomerName = "Joe Jones"&lt;br /&gt;OrderVariable.TotalPrice = &lt;br /&gt;35.00&lt;br /&gt;&lt;br /&gt;II. CLASSES&lt;br /&gt;&lt;br /&gt;Classes are similar to types but classes go one &lt;br /&gt;step further. Like types, &lt;br /&gt;classes can declare aggregates of data&lt;br /&gt;which &#xD;
can be manipulated as a single unit. Classes also allow subprograms to be &#xD;
&lt;br /&gt;declared which manipulate&lt;br /&gt;the class data. The data and the subprograms &lt;br /&gt;together form a class; a single &lt;br /&gt;unit. A programming language&lt;br /&gt;such as &lt;br /&gt;LotusScript which allows programs based on classes to be created is &lt;br /&gt;called &lt;br /&gt;an object-oriented&lt;br /&gt;programming language.&lt;br /&gt;&lt;br /&gt;A class is defined similar to &lt;br /&gt;a type. Variables are defined which are &lt;br /&gt;aggregated in the class. The &lt;br /&gt;subprograms&lt;br /&gt;or methods can also be defined that manipulate the class &lt;br /&gt;variables or data &lt;br /&gt;members. Methods can take the&lt;br /&gt;form of subs, functions &lt;br /&gt;or properties.&lt;br /&gt;&lt;br /&gt;Once a class is defined, the instances of the class are &lt;br /&gt;created. These &lt;br /&gt;instances are called objects. The&lt;br /&gt;CLASS...END CLASS &lt;br /&gt;statement is used to create a class definition. Classes can &lt;br /&gt;only be defined &lt;br /&gt;at the&lt;br /&gt;module level.&lt;br /&gt;&lt;br /&gt;For example, in the following script, a Customer &lt;br /&gt;class is declared with data &lt;br /&gt;members called CustName,&lt;br /&gt;Address and Balance. &lt;br /&gt;This class also includes a subprogram member, called &lt;br /&gt;&lt;br /&gt;CheckOverdue.&lt;br /&gt;&lt;br /&gt;CLASS Customer&lt;br /&gt;PUBLIC CustName AS STRING&lt;br /&gt;PUBLIC &lt;br /&gt;Address AS STRING&lt;br /&gt;Balance AS CURRENCY&lt;br /&gt;&lt;br /&gt;SUB CheckOverdue 'This &lt;br /&gt;subprogram takes no arguments&lt;br /&gt;IF Balance &amp;gt; 0 THEN&lt;br /&gt;PRINT "Overdue &lt;br /&gt;Balance"&lt;br /&gt;END IF&lt;br /&gt;END SUB&lt;br /&gt;END CLASS&lt;br /&gt;&lt;br /&gt;Private versus &lt;br /&gt;Public:&lt;br /&gt;&lt;br /&gt;Class members can be Public or Private. By default, class data &lt;br /&gt;members are &lt;br /&gt;Private and class subprogram&lt;br /&gt;members (methods) are Public. &lt;br /&gt;Public class members can be referred to outside &lt;br /&gt;of the class definition; &lt;br /&gt;Private&lt;br /&gt;members cannot. Private data members are hidden from subprograms &lt;br /&gt;defined &lt;br /&gt;outside of the class. Data hiding&lt;br /&gt;helps programmers structure &lt;br /&gt;their programs to limit access to member data. In &lt;br /&gt;the above example, the &lt;br /&gt;only&lt;br /&gt;subprograms which can refer to Balance data are the member subprograms &lt;br /&gt;&lt;br /&gt;(methods) defined in the class&lt;br /&gt;Customer; for example, the member &lt;br /&gt;subprogram CheckOverdue defined above. The &lt;br /&gt;data members&lt;br /&gt;CustName and &lt;br /&gt;Address are declared Public, so these data members can be referred &lt;br /&gt;to by &lt;br /&gt;subprograms&lt;br /&gt;defined outside of the class Customer.&lt;br /&gt;&lt;br /&gt;After defining a &lt;br /&gt;class, the DIM statement may be used to declare variables &lt;br /&gt;which refer to &lt;br /&gt;objects of that class.&lt;br /&gt;When an object reference variable is declared, an &lt;br /&gt;object itself is not created. &lt;br /&gt;The object reference variable &lt;br /&gt;is&lt;br /&gt;initialized to contain the special value NOTHING.&lt;br /&gt;&lt;br /&gt;For &lt;br /&gt;example:&lt;br /&gt;&lt;br /&gt;DIM X AS Customer&lt;br /&gt;'This statement declares an object &lt;br /&gt;reference variable&lt;br /&gt;&lt;br /&gt;X can hold either references to Customer objects or &lt;br /&gt;the value NOTHING. X is &lt;br /&gt;initialized to NOTHING.&lt;br /&gt;&lt;br /&gt;Once an object &lt;br /&gt;reference variable has been created, an object can be created in &lt;br /&gt;one of two &lt;br /&gt;ways. The first is&lt;br /&gt;to use the keyword NEW in the declaration statement for &lt;br /&gt;the object reference &lt;br /&gt;variable. Using the keyword&lt;br /&gt;NEW declares an object &lt;br /&gt;reference variable, creates an object and assigns a &lt;br /&gt;reference to the &lt;br /&gt;newly-created&lt;br /&gt;object to the variable.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;DIM X AS NEW &lt;br /&gt;Customer&lt;br /&gt;&lt;br /&gt;The second way to create an instance of a class is to use a SET &lt;br /&gt;statement which &lt;br /&gt;includes the NEW keyword&lt;br /&gt;and a variable which has been &lt;br /&gt;previously declared as an object reference &lt;br /&gt;variable for that &lt;br /&gt;class.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;DIM X AS Customer&lt;br /&gt;SET X = NEW &lt;br /&gt;Customer&lt;br /&gt;&lt;br /&gt;Once an object has been created, Dot Notation may be used to &lt;br /&gt;refer to the data &lt;br /&gt;members and methods&lt;br /&gt;associated with the object of the &lt;br /&gt;given class; similar to using Dot Notation &lt;br /&gt;with a type. Dot Notation is used &lt;br /&gt;to&lt;br /&gt;refer to an individual member of an object. Dot Notation is also used to &lt;br /&gt;&lt;br /&gt;reference member subprograms&lt;br /&gt;(methods) in a class.&lt;br /&gt;&lt;br /&gt;For objects &lt;br /&gt;declared outside the class, Dot Notation can only be used to access &lt;br /&gt;data &lt;br /&gt;members that are&lt;br /&gt;Public. For example, if X is a Public object reference &lt;br /&gt;variable of the class &lt;br /&gt;Customer, the Public data member&lt;br /&gt;Balance in the &lt;br /&gt;class Customer is referred to as X.Balance outside the class &lt;br /&gt;definition. If &lt;br /&gt;the data member&lt;br /&gt;Balance was not declared using the PUBLIC keyword, it would &lt;br /&gt;be accessible only &lt;br /&gt;from within the class&lt;br /&gt;definition; not outside of &lt;br /&gt;it.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;CLASS Customer&lt;br /&gt;PUBLIC CustName AS &lt;br /&gt;STRING&lt;br /&gt;PUBLIC Address AS STRING&lt;br /&gt;PUBLIC Balance AS CURRENCY&lt;br /&gt;&lt;br /&gt;SUB &lt;br /&gt;CheckOverdue ' This subprogram takes no arguments&lt;br /&gt;IF Balance &amp;gt; 0 &lt;br /&gt;THEN&lt;br /&gt;PRINT "Overdue Balance"&lt;br /&gt;END IF&lt;br /&gt;END SUB&lt;br /&gt;END CLASS&lt;br /&gt;&lt;br /&gt;DIM X &lt;br /&gt;AS NEW Customer&lt;br /&gt;'This statement declares an object reference variable X of &lt;br /&gt;the class Customer &lt;br /&gt;and also creates an object of&lt;br /&gt;that class and assign X &lt;br /&gt;a reference to the new Customer object.&lt;br /&gt;&lt;br /&gt;X.CustName = "Acme &lt;br /&gt;Corp."&lt;br /&gt;'This statement is legal because CustName is Public.&lt;br /&gt;&lt;br /&gt;X.Balance &lt;br /&gt;= 35.00&lt;br /&gt;'This statement is legal because Balance is &lt;br /&gt;Public.&lt;br /&gt;&lt;br /&gt;X.CheckOverdue&lt;br /&gt;'This statement invokes the member subprogram &lt;br /&gt;CheckOverdue. Since this sub &lt;br /&gt;takes no arguments, no&lt;br /&gt;arguments are passed &lt;br /&gt;when the sub is called. In this instance, the text &lt;br /&gt;"Overdue Balance" would &lt;br /&gt;print since&lt;br /&gt;X.Balance is greater than zero.&lt;br /&gt;&lt;br /&gt;Members of the Current &lt;br /&gt;Object within a class subprogram (method) can be &lt;br /&gt;declared by using the &lt;br /&gt;ME&lt;br /&gt;keyword. The ME keyword is not valid outside of a class method &lt;br /&gt;(subprogram).&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;CLASS Customer&lt;br /&gt;PUBLIC CustName AS &lt;br /&gt;STRING&lt;br /&gt;PUBLIC Address AS STRING&lt;br /&gt;PUBLIC Balance AS CURRENCY&lt;br /&gt;&lt;br /&gt;SUB &lt;br /&gt;CheckOverdue 'This subprogram takes no arguments&lt;br /&gt;IF ME.Balance &amp;gt; 0 &lt;br /&gt;THEN&lt;br /&gt;PRINT ME.Balance&lt;br /&gt;ELSE&lt;br /&gt;PRINT "No overdue Balance"&lt;br /&gt;END IF&lt;br /&gt;END &lt;br /&gt;SUB&lt;br /&gt;END CLASS&lt;br /&gt;&lt;br /&gt;DIM X AS NEW Customer&lt;br /&gt;'This statement declares an &lt;br /&gt;object reference variable X of the class Customer. &lt;br /&gt;It also creates an object &lt;br /&gt;of that&lt;br /&gt;class and assign X a reference to the new Customer &lt;br /&gt;object&lt;br /&gt;&lt;br /&gt;X.CustName = "Acme Corp."&lt;br /&gt;'This statement is legal because &lt;br /&gt;CustName is Public.&lt;br /&gt;&lt;br /&gt;X.Balance = 35.00&lt;br /&gt;'This statement is legal because &lt;br /&gt;Balance is Public.&lt;br /&gt;&lt;br /&gt;X.CheckOverdue&lt;br /&gt;'This statement invokes the member &lt;br /&gt;subprogram CheckOverdue. Since this sub &lt;br /&gt;takes no arguments, no&lt;br /&gt;arguments &lt;br /&gt;are passed when the sub is called. In this instance, the value of &lt;br /&gt;X.Balance &lt;br /&gt;would print since&lt;br /&gt;X.Balance is greater than zero.&lt;br /&gt;&lt;br /&gt;For additional &lt;br /&gt;information about Types and Classes, refer to the LotusScript &lt;br /&gt;Reference &lt;br /&gt;Guide, Chapters 3&lt;br /&gt;and 5, respectively.&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/hannover/aggbug/2334201.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hannover/archive/2012/02/01/2334201.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hannover/archive/2012/01/23/2328940.html</id><title type="text">Base 64 encoder/decoder for Lotus Script</title><summary type="text">This an implementation of Base64 as described in rfc4648 (The Base16, Base32, and Base64 Data Encodings) for the Lotus Notes environment.Base64 is an algorithm to encode binary data into a ascii text representation. Common applications arePassing credentials to web servers: HTTP Authentication: Bas.</summary><published>2012-01-23T03:24:00Z</published><updated>2012-01-23T03:24:00Z</updated><author><name>hannover</name><uri>http://www.cnblogs.com/hannover/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328940.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328940.html"/><content type="html">&#xD;
 &#xD;
&lt;p&gt;This an implementation of Base64 as described in rfc4648 (The Base16, Base32, and Base64 Data Encodings) for the Lotus Notes environment.&lt;/p&gt;&lt;p&gt;Base64 is an algorithm to encode binary data into a ascii text representation. Common applications are&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Passing credentials to web servers: HTTP Authentication: Basic and Digest Access Authentication.&lt;/li&gt;&lt;li&gt;Transferring binary data in email:For this purpose, the encoding can be run in MIME-mode to produce line breaks.&lt;/li&gt;&lt;li&gt;Transferring or storing binary data in other formats, like XML.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This library makes use of NotesStreams and NotesMIMEEntity that came with Notes 6.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Save and unzip the code to a text file (libBase64.lss)&lt;/li&gt;&lt;li&gt;Use Domino Designer to create a new empty Lotus Script library &amp;#8216;libBase64&amp;#8242;&lt;/li&gt;&lt;li&gt;Import libBase64.lss and save the lib&lt;/li&gt;&lt;li&gt;Now you can include the library (&lt;code&gt;Use "libBase64"&lt;/code&gt;) and use it:&lt;br /&gt;&lt;code&gt;Dim b64 As New CBase64()&lt;br /&gt;Call b64.encode (..)&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Samples &lt;p&gt;&lt;/p&gt;&lt;hr noshade="noshade" /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Encode a string to base64&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='line-height: 18px; font-family: Consolas, Monaco, "Courier New", Courier, monospace; font-size: 12px; white-space: pre;'&gt; Dim b64 As New CBase64()&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span&gt;	Print b64.encodeString ("foobar")&#xD;
	&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Encode a binary file to a base64 encoded file&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='line-height: 18px; font-family: Consolas, Monaco, "Courier New", Courier, monospace; font-size: 12px; white-space: pre;'&gt; Dim b64 As New CBase64()&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span&gt;	Call b64.encodeFileToFile (fspecInput, fspecOutput)&#xD;
	&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The result file will have line breaks at column 76. If this is not desired, than it can be suppressed. This will be a bit slower however:&lt;/p&gt;&lt;pre&gt;&lt;span&gt;&#xD;
	Dim b64 As New CBase64()&#xD;
	b64.bMimeModeEncoding = False&#xD;
	Call b64.encodeFileToFile (fspecInput, fspecOutput)&#xD;
	&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Decode a base64 encoded file to a (probably binary) file&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='line-height: 18px; font-family: Consolas, Monaco, "Courier New", Courier, monospace; font-size: 12px; white-space: pre;'&gt; Dim b64 As New CBase64()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='line-height: 18px; font-family: Consolas, Monaco, "Courier New", Courier, monospace; font-size: 12px; white-space: pre;'&gt; &lt;/span&gt;&lt;span style='line-height: 18px; font-family: Consolas, Monaco, "Courier New", Courier, monospace; font-size: 12px; white-space: pre;'&gt; Call b64.decodeFileToFile (fspecInput, fspecOutput)&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span&gt;	&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;!-- You can start editing here. --&gt;&lt;div id="comments_wrap"&gt;&lt;!-- If comments are open, but there are no comments. --&gt;&lt;/div&gt; &lt;!-- end #comments_wrap --&gt;&lt;div id="respond"&gt;&lt;h3 &gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;div id="sidebar" &gt;&lt;div id="sidebar_in"&gt;&lt;div id="text-3" &gt;&lt;div &gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ins style="margin: 0px; padding: 0px; border: currentColor; width: 250px; height: 250px; display: inline-table; visibility: visible; position: relative;"&gt;&lt;ins style="margin: 0px; padding: 0px; border: currentColor; width: 250px; height: 250px; display: block; visibility: visible; position: relative;" id="aswift_0_anchor"&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--- Sidebar Ends --&gt;&lt;div id="footer" &gt;&lt;div &gt;&lt;div &gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div &gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.cnblogs.com/hannover/aggbug/2328940.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328940.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hannover/archive/2012/01/23/2328939.html</id><title type="text">能否对更改internet密码所需的缓存时间进行调整？</title><summary type="text">问题描述:Domino的用户可以自己通过Web的方式去修改internet密码，更改结束后，旧的密码被放到服务器的缓存中，保留两天来确保管理请求数据库和domino通讯录之间的复制完成。更改密码的请求是由adminP这个任务，在管理请求数据库admin4.nsf中发起“change http password in domino directory”的管理请求从而得以完成的。如果这个默认的缓存时间过长或者过短怎么办？能调整这段缓存时间吗？解答:缓存时间可以通过在server的notes.ini里面添加以下参数来修改:HTTP_Pwd_Change_Cache_Hours使用的格式如下：HTT.</summary><published>2012-01-23T03:22:00Z</published><updated>2012-01-23T03:22:00Z</updated><author><name>hannover</name><uri>http://www.cnblogs.com/hannover/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328939.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328939.html"/><content type="html">&#xD;
 &#xD;
&lt;p&gt;问题描述:&lt;/p&gt;&lt;p&gt;Domino的用户可以自己通过Web的方式去修改internet密码，更改结束后，旧的密码被放到服务器的缓存中，保留两天来确保管理请求数据库和domino通讯录之间的复制完成。更改密码的请求是由adminP这个任务，在管理请求数据库admin4.nsf中发起&amp;#8220;change http password in domino directory&amp;#8221;的管理请求从而得以完成的。如果这个默认的缓存时间过长或者过短怎么办？能调整这段缓存时间吗？&lt;/p&gt;&lt;p&gt;解答:&lt;/p&gt;&lt;p&gt;缓存时间可以通过在server的notes.ini里面添加以下参数来修改:&lt;/p&gt;&lt;p&gt;HTTP_Pwd_Change_Cache_Hours&lt;/p&gt;&lt;p&gt;使用的格式如下：&lt;/p&gt;&lt;p&gt;HTTP_Pwd_Change_Cache_Hours=X（X是旧的密码保存在缓存中的小时数目）。&lt;/p&gt;&lt;p&gt;在这段缓存时间内，旧的密码和新的密码都是有效的。&lt;/p&gt;&lt;p&gt;此外，如果服务器有设置过安全性策略文档，在&amp;#8220;口令管理&amp;#8221;标签下面，&amp;#8220;允许用户通过 HTTP 改变 Internet 口令&amp;#8221;这个域值应该是&amp;#8220;是&amp;#8221;。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hannover/aggbug/2328939.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328939.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hannover/archive/2012/01/23/2328938.html</id><title type="text">DOMINO外网邮件发不出解决办法</title><summary type="text">上个月,由于邮件系统转移到DOMINO平台上,发生了一件非常奇怪的事情.整个情况:内网邮件接发正常,可以接到外网邮件,但是发出的外网邮件,提示发送成功,但是对方却收取不到.分析:邮件系统是由2台server组成的.domino的邮件收取是由代理完成,即server1完成内部邮件的发送收取,外部邮件的发送.按上面的情况,这3点正常就证明server1是不存在问题的.向外发,由server2发向server1,server1转发出去,DOMINO进行邮件发送时候,所有有问题的邮件可以用domino administrator 消息处理检查mailbox,找到发不出的邮件,打开,可以看见正式错误提.</summary><published>2012-01-23T03:21:00Z</published><updated>2012-01-23T03:21:00Z</updated><author><name>hannover</name><uri>http://www.cnblogs.com/hannover/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328938.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328938.html"/><content type="html">&#xD;
 &#xD;
&lt;p&gt;上个月,由于邮件系统转移到DOMINO平台上,发生了一件非常奇怪的事情.&lt;/p&gt;&lt;p&gt;整个情况:内网邮件接发正常,可以接到外网邮件,但是发出的外网邮件,提示发送成功,但是对方却收取不到.&lt;/p&gt;&lt;p&gt;分析:邮件系统是由2台server组成的.&lt;/p&gt;&lt;p&gt;domino的邮件收取是由代理完成,即server1完成内部邮件的发送收取,外部邮件的发送.&lt;/p&gt;&lt;p&gt;按上面的情况,这3点正常就证明server1是不存在问题的.&lt;/p&gt;&lt;p&gt;向外发,由server2发向server1,server1转发出去,DOMINO进行邮件发送时候,所有有问题的邮件可以用domino administrator 消息处理检查mailbox,找到发不出的邮件,打开,可以看见正式错误提示&lt;/p&gt;&lt;p&gt;另外,domino邮件系统可以提供邮件追踪,可以追踪到邮件状态.&lt;/p&gt;&lt;p&gt;当我们在mailbox找到邮件的时候可以确定:邮件没有发出.&lt;/p&gt;&lt;p&gt;当时唯一通过google收集的有效信息就是,DNS出现错误了.&lt;/p&gt;&lt;p&gt;检查server的IP配置,可以确定没有问题,可是问题再那里呢?&lt;/p&gt;&lt;p&gt;再google提示到双网卡的问题,由于DOMINO是不识别双网卡的,双网卡会导致识别不了DNS.可是,我们只对一块网卡设置了IP,另一块的禁用的.&lt;/p&gt;&lt;p&gt;事实证明DOMINO就是这么笨蛋,只要有二块网卡DNS就是不认.&lt;/p&gt;&lt;p&gt;解决的办法很简单.&lt;/p&gt;&lt;p&gt;在domino目录的notes,ini文件中间增加一句话:DNSServer=DNS IP.例如是深圳的用户:DNSServer=202.96.134.133,这样就可以确信DOMINO可以识别正确的DNS了&lt;/p&gt;&lt;p&gt;一些邮件问题解决步骤:&lt;/p&gt;&lt;p&gt;&amp;#9679;邮件不能发送出去？ &lt;br /&gt;【对策】 &lt;br /&gt;检查[配置]&amp;#8212;[服务器/配置]&amp;#8212;[编辑]： &lt;br /&gt;a.发件人地址 &lt;br /&gt;b.任务 &lt;br /&gt;c.目的服务器 &lt;br /&gt;d.网络连接 &lt;br /&gt;e.路由时间安排 &lt;br /&gt;f.连接文档 &lt;br /&gt;g.邮件大小 &lt;br /&gt;h.优先级与待发邮件数 &lt;br /&gt;i.邮递限制j.宿主邮件服务器 &lt;/p&gt;&lt;p&gt;&amp;#9679;收到退信？ &lt;br /&gt;【对策】 &lt;br /&gt;查看：消息处理、邮件、public邮箱（mail.box）、Console command：show server &lt;br /&gt;处理：删除或释放死锁邮件 &lt;/p&gt;&lt;p&gt;&amp;#9679;发出，无退信，但对方无法及时收到？ &lt;br /&gt;【对策】 &lt;br /&gt;检查：1）用户惯用选项&amp;#8212;端口&amp;#8212;跟踪&amp;#8212;跟踪，选择跟踪条件，发跟踪邮件，返回跟踪报告。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2）路由时间安排 &lt;/p&gt;&lt;p&gt;[color=blue]&amp;#9733;邮件诊断操作步骤[/color] &lt;/p&gt;&lt;p&gt;&amp;#9734;配置邮件跟踪： &lt;br /&gt;配置、服务器、配置、填加配置（或编辑现有的服务器配置文文件） &lt;br /&gt;基本：使用这些设置作为所有服务器的缺省设置（是） &lt;br /&gt;或&amp;nbsp; 添入具体的群组或服务器名称 &lt;br /&gt;路由器/SMTP、消息跟踪： &lt;br /&gt;消息跟踪：启用 &lt;br /&gt;记录消息主题：是 &lt;br /&gt;消息跟踪集合时间间隔：15 &lt;br /&gt;允许跟踪消息：加入服务器名 &lt;br /&gt;允许跟踪主题： &lt;br /&gt;保存退出 &lt;/p&gt;&lt;p&gt;&amp;#9734;启动、停止邮件跟踪任务 &lt;br /&gt;配置邮件跟踪后，在服务器启动时，会自动创建&amp;#8220;邮件跟踪储存&amp;#8221;数据库： &lt;br /&gt;\lotus\domino\data\mtdata\mtstore.nsf &lt;br /&gt;服务器启动时，自动启动服务器上的邮件跟踪。 &lt;br /&gt;手动： &lt;br /&gt;Load&amp;nbsp; mtc &lt;br /&gt;Tell&amp;nbsp; mtc&amp;nbsp; quit &lt;br /&gt;Tell&amp;nbsp; mtc&amp;nbsp; process &lt;/p&gt;&lt;p&gt;&amp;#9734;发送跟踪邮件： &lt;br /&gt;消息处理、邮件、工具、消息处理、发送邮件跟踪 &lt;br /&gt;收件人： &lt;br /&gt;主题： &lt;br /&gt;发送跟踪报告来自： &lt;br /&gt;发送、完成 &lt;/p&gt;&lt;p&gt;&amp;#9734;查看邮递报告 &lt;br /&gt;消息处理、邮件、邮件路由事件 &lt;br /&gt;打开相关文档，查看邮递报告或打开邮箱，会收到邮递报告 &lt;/p&gt;&lt;p&gt;&amp;#9734;跟踪中心： &lt;br /&gt;消息处理、跟踪中心 &lt;br /&gt;新建跟踪请求 &lt;br /&gt;从；到；发送；开始；主题等 &lt;br /&gt;确定 &lt;br /&gt;选择一个邮件 &lt;br /&gt;跟踪选定的信息 &lt;br /&gt;查看跟踪结果 &lt;/p&gt;&lt;p&gt;[color=blue]&amp;#9733;邮箱方面操作点滴[/color] &lt;/p&gt;&lt;p&gt;&amp;#9670;优化邮件 &lt;br /&gt;多个邮箱： &lt;br /&gt;设置多个（3--5）MAIL.BOX，同时处理邮件 &lt;br /&gt;减少争夺 &lt;br /&gt;增加可靠性 &lt;br /&gt;提高传送速度 &lt;br /&gt;配置、服务器、配置、打开服务器配置文文件、路由器/SMTP &lt;br /&gt;基本：邮箱数（N） &lt;br /&gt;RES&amp;nbsp; S &lt;/p&gt;&lt;p&gt;&amp;#9670;共享邮件： &lt;br /&gt;邮件： &lt;br /&gt;信头：发送给所有用户 &lt;br /&gt;信体：发送一份到共享邮箱中 &lt;br /&gt;配置、服务器、配置、打开服务器配置文文件 &lt;br /&gt;在NOTES.INI中加入SHARED_MAIL=1 &lt;br /&gt;RES&amp;nbsp; S &lt;/p&gt;&lt;p&gt;&amp;#9670;邮件限额：限制NOTES用户的邮箱和邮件的大小 &lt;br /&gt;1、邮件文件 &lt;br /&gt;文件、MAIL活页夹、选一个用户文件、工具、数据库、限额、限制限额及警告值 &lt;br /&gt;在其它消息中可疑查看限额 &lt;br /&gt;在建立用户时，也可以进行限额设定操作 &lt;br /&gt;2、每个邮件的限额 &lt;br /&gt;配置、服务器、配置、打开配置文文件、路由器/SMTP、限制和控件、限制 &lt;br /&gt;最大消息长度 &lt;/p&gt;&lt;p&gt;&amp;#9670;邮件内容格式： &lt;br /&gt;用户个人文文件：邮件、外出邮件的惯用格式 &lt;br /&gt;场所文档：编辑场所、邮件、寻址发送到internet的邮件的消息格式 &lt;/p&gt;&lt;p&gt;&amp;#9670;设置用户执行邮件代理 &lt;br /&gt;编辑服务器文文件、安全性、代理限制、在&amp;#8220;运行受限制的LotusScript/Java代理&amp;#8221;中填加用户&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hannover/aggbug/2328938.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328938.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hannover/archive/2012/01/23/2328937.html</id><title type="text">Table of Notes and Domino known limits</title><summary type="text">The following table summarizes the known maximum limits of various Notes and Domino features.ItemMaximum limitDatabase sizeThe maximum OS file size limit -- (up to 64GB)Text field size32KB (storage); 32KB displayed in a view&amp;#39;s columnRich text field sizeLimited only by available disk space up to </summary><published>2012-01-23T03:20:00Z</published><updated>2012-01-23T03:20:00Z</updated><author><name>hannover</name><uri>http://www.cnblogs.com/hannover/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328937.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328937.html"/><content type="html">&#xD;
 &#xD;
&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;The following table summarizes the known maximum limits of various Notes and Domino features.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;table style="border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border-color: windowtext rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; border-top-width: 1pt; border-bottom-width: 1pt; border-top-style: solid; border-bottom-style: solid; background-color: transparent;" valign="top" width="33%"&gt;&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Item&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: windowtext rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; border-top-width: 1pt; border-bottom-width: 1pt; border-top-style: solid; border-bottom-style: solid; background-color: transparent;" valign="top" width="66%"&gt;&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Maximum limit&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Database size&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;The maximum OS file size limit -- (up to 64GB)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Text field size&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;32KB (storage); 32KB displayed in a view's column&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Rich text field size&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Limited only by available disk space up to 1GB&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Response levels in a hierarchical view; number of documents per level&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;31 levels; 300,000 documents&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Characters in names&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Database Title: 96 bytes&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Filenames: On Windows&lt;/span&gt;&lt;span style="color: black; font-size: 9pt;"&gt;&amp;#174;&lt;/span&gt;&lt;span style="color: black; font-size: 9pt;"&gt; and UNIX&lt;/span&gt;&lt;span style="color: black; font-size: 9pt;"&gt;&amp;#174;&lt;/span&gt;&lt;span style="color: black; font-size: 9pt;"&gt;platforms minimum of 255 and/or OS limits; on local Macintosh workstation 31&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Field names: 32&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;View names: 64&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Form names: 32&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Agent names: 32&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Fields in a database&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;~ 3000 (limited to ~ 64K total length for all field names). You can enable the database property "Allow more fields in database" to get up to 22,893 uniquely-named fields in the database.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Columns in a table&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;64&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Rows in a table&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;255&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Views in a database&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;No limit; however, as the number of views increases, the length of time to display other views also increases&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Forms in a database&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Limited only by database size.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Columns in a view&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;289 ten-character columns; dependent upon # or characters per column&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Documents imported into a view&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Documents totaling at least 350K&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Cascading views in a database&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;200&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Margin size (in inches)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;46&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Page cropping size (in inches)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;46&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Point size to select or print&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;250&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Documents in a view&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Maximum of 130MB for a view index&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Documents that can be exported to tabular text&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Limited only by available disk space&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Entries in an Access Control List (ACL)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;~950 names (ACL size is limited to 32767 bytes)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Roles in an Access Control List&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;75 Roles&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;ID password length&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;63 characters&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 33.8%; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Authorized users on a multiple password ID&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200); padding: 4.3pt; width: 66.18%; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;8 users&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-color: rgb(212, 208, 200) rgb(212, 208, 200) windowtext; padding: 4.3pt; width: 33.8%; border-bottom-width: 1pt; border-bottom-style: solid; background-color: transparent;" valign="top" width="33%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;Outline entries in an outline&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-color: rgb(212, 208, 200) rgb(212, 208, 200) windowtext; padding: 4.3pt; width: 66.18%; border-bottom-width: 1pt; border-bottom-style: solid; background-color: transparent;" valign="top" width="66%"&gt;&lt;p style="margin: 0cm 0cm 6pt;" align="left"&gt;&lt;span style="color: black; font-size: 9pt;"&gt;~21,000 entries&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://www.cnblogs.com/hannover/aggbug/2328937.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328937.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hannover/archive/2012/01/23/2328936.html</id><title type="text">Domino中运用ajax判断帐号是否存在的简单例子</title><summary type="text">举例为帐号申请单，在开单的时输入一个帐号，系统判断该帐号是否存在于系统中。1.在表单的JS Header中写判断的javascript函数：var request;function checkloginname(){request = new ActiveXObject(&amp;quot;Msxml2.XMLHTTP&amp;quot;)if (!request){ request=new ActiveXObject(&amp;quot;Microsoft.XMLHTTP&amp;quot;);} request.onreadystatechange=aftercheckloginname; //这里假设数据库路径为mis</summary><published>2012-01-23T03:18:00Z</published><updated>2012-01-23T03:18:00Z</updated><author><name>hannover</name><uri>http://www.cnblogs.com/hannover/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328936.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328936.html"/><content type="html">&#xD;
 &#xD;
&amp;nbsp;举例为帐号申请单，在开单的时输入一个帐号，系统判断该帐号是否存在于系统中。&lt;p&gt;1.在表单的JS Header中写判断的javascript函数：&lt;/p&gt;&lt;p&gt;var request;&lt;br /&gt;function checkloginname(){&lt;br /&gt;request = new ActiveXObject("Msxml2.XMLHTTP")&lt;br /&gt;if (!request){&lt;br /&gt;&amp;nbsp; request=new ActiveXObject("Microsoft.XMLHTTP");}&lt;br /&gt;&amp;nbsp; request.onreadystatechange=aftercheckloginname;&lt;/p&gt;&lt;p&gt;//这里假设数据库路径为mis/accounts.nsf，且表单中输入帐号的域是account，将这个域的值传递到代理中&lt;br /&gt;&amp;nbsp; url="/mis/accounts.nsf/checkRepeatId?openagent&amp;amp;Id="+document.forms[0].account.value;&lt;br /&gt;&amp;nbsp; request.open("post",url,true);&lt;br /&gt;&amp;nbsp; request.send(null);&lt;br /&gt;}&lt;br /&gt;function aftercheckloginname(){&lt;br /&gt;if (request.readystate==4){&lt;br /&gt;&amp;nbsp; if (request.status==200){&lt;br /&gt;&amp;nbsp;&amp;nbsp; if (request.responseText.indexOf("1")&amp;gt;-1){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert (" 对不起，该帐号已经被使用！");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.forms[0].account.value="";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.forms[0].account.focus();&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2.新建一个checkRepeatId的代理：&lt;/p&gt;&lt;p&gt;Sub Initialize&lt;br /&gt;Dim ss As New NotesSession&lt;br /&gt;Dim doc,docx As NotesDocument&lt;br /&gt;Dim view As NotesView&lt;br /&gt;Dim db As NotesDatabase&lt;br /&gt;&lt;br /&gt;Set doc=ss.DocumentContext&lt;br /&gt;Set db=ss.CurrentDatabase&lt;br /&gt;Set view=db.GetView("checkid")&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '这个试图即为帐号的试图，试图第一列为帐号&lt;br /&gt;macro=|@RightBack(Query_String_Decoded;"=")|&amp;nbsp;&amp;nbsp;&amp;nbsp; '这句是获取从URL传过来的参数&lt;/p&gt;&lt;p&gt;id=Evaluate(macro,doc) &lt;br /&gt;&lt;br /&gt;Set docx=view.GetDocumentByKey(id(0),True)&lt;br /&gt;Print "Content-type: text/xml"&lt;br /&gt;If Not docx Is Nothing Then&lt;br /&gt;&amp;nbsp; Print "1"&lt;br /&gt;Else&lt;br /&gt;&amp;nbsp; Print "0"&lt;br /&gt;End If&lt;br /&gt;End Sub&lt;/p&gt;&lt;p&gt;3.在表单中输入帐号的域，这里举例为account，在域的onchange或者onblur事件中调用javascript方法checkloginname()&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hannover/aggbug/2328936.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328936.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hannover/archive/2012/01/23/2328934.html</id><title type="text">Domino中B/S下的附件链接</title><summary type="text">一、只读链接thisDb:=@ReplaceSubstring(@ReplaceSubstring(@Subset(@DbName;-1);&amp;quot; &amp;quot;;&amp;quot;+&amp;quot;);&amp;quot;\\&amp;quot;;&amp;quot;/&amp;quot;);@If(@Attachments!=0;&amp;quot;[&amp;lt;a href=\&amp;quot;/&amp;quot;+thisDb+&amp;quot;/0/&amp;quot;+@Text(@DocumentUniqueID)+&amp;quot;/$FILE/&amp;quot;+@AttachmentNames+&amp;quot;\&amp;quot; target=\&amp;quot;_blan</summary><published>2012-01-23T03:17:00Z</published><updated>2012-01-23T03:17:00Z</updated><author><name>hannover</name><uri>http://www.cnblogs.com/hannover/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328934.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328934.html"/><content type="html">&#xD;
 &#xD;
一、只读链接&lt;br /&gt;thisDb:=@ReplaceSubstring(@ReplaceSubstring(@Subset(@DbName;-1);" ";"+");"\\";"/");&lt;br /&gt;@If(@Attachments!=0;"[&amp;lt;a href=\"/"+thisDb+"/0/"+@Text(@DocumentUniqueID)+"/$FILE/"+@AttachmentNames+"\" target=\"_blank\"&amp;gt;"+@AttachmentNames+"&amp;lt;/a&amp;gt;]";"")&lt;br /&gt;&lt;br /&gt;二、可删除链接&lt;br /&gt;thisDb:=@ReplaceSubstring(@ReplaceSubstring(@Subset(@DbName;-1);" ";"+");"\\";"/");&lt;br /&gt;@If(@Attachments!=0;"[&amp;lt;INPUT TYPE=checkbox NAME=\"%%Detach.1\" VALUE=\""+@AttachmentNames+"\"&amp;gt;&amp;lt;a href=\"/"+thisDb+"/0/"+@Text(@DocumentUniqueID)+"/$FILE/"+@AttachmentNames+"\" target=\"_blank\"&amp;gt;"+@AttachmentNames+"&amp;lt;/a&amp;gt;]";"")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;但是，当附件的名称中包含&amp;#8220;#&amp;#8221;、&amp;#8220;&amp;amp;&amp;#8221;等特殊符号时（例如jeep#beijing.jpg），上面写的链接在特殊符号处就会被截断，从而导致附件不能正常打开。要解决这个问题，需要在写链接的时候把这些特殊符号进行转换，具体方法如下：&lt;br /&gt;thisDb:=@ReplaceSubstring(@ReplaceSubstring(@Subset(@DbName;-1);" ";"+");"\\";"/");&lt;br /&gt;aa:=@URLEncode("domino";@AttachmentNames);&lt;br /&gt;@If(@Attachments!=0;"[&amp;lt;a href=\"/"+thisDb+"/0/"+@Text(@DocumentUniqueID)+"/$FILE/"+aa+"\" target=\"_blank\"&amp;gt;"+@AttachmentNames+"&amp;lt;/a&amp;gt;]";"")&lt;br /&gt;&lt;img src="http://www.cnblogs.com/hannover/aggbug/2328934.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328934.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hannover/archive/2012/01/23/2328929.html</id><title type="text">These are useful functions when you are dealing with URL encoded URLs or POST data.</title><summary type="text">Public Function urlDecode(s As String) As String	If Len(s) = 0 Then Exit Function	Dim i As Integer	Dim tmp As String	Dim c As String	For i = 1 To Len(s) c = Mid$(s, i, 1) If c = &amp;quot;+&amp;quot; Then c = &amp;quot; &amp;quot; If c = &amp;quot;%&amp;quot; Then c = Chr$(&amp;quot;&amp;amp;H&amp;quot; + Mid$(s, i + 1, 2)) i = i + 2 </summary><published>2012-01-23T02:40:00Z</published><updated>2012-01-23T02:40:00Z</updated><author><name>hannover</name><uri>http://www.cnblogs.com/hannover/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328929.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328929.html"/><content type="html">&#xD;
 &#xD;
&lt;pre&gt;&lt;code&gt;Public Function urlDecode(s As String) As String&#xD;
	If Len(s) = 0 Then Exit Function&#xD;
	Dim i As Integer&#xD;
	Dim tmp As String&#xD;
	Dim c As String&#xD;
	For i = 1 To Len(s)&#xD;
		c = Mid$(s, i, 1)&#xD;
		If c = "+" Then c = " "&#xD;
		If c = "%" Then&#xD;
			c = Chr$("&amp;amp;H" + Mid$(s, i + 1, 2))&#xD;
			i = i + 2&#xD;
		End If&#xD;
		tmp = tmp + c&#xD;
	Next i&#xD;
	urlDecode = tmp&#xD;
End Function&#xD;
&#xD;
Public Function urlEncode(s As String) As String&#xD;
	If Len(s) = 0 Then Exit Function&#xD;
	&#xD;
	Dim tmp As String&#xD;
	Dim c As String&#xD;
	Dim i As Integer&#xD;
	&#xD;
	For i = 1 To Len(s)&#xD;
		c = Mid(s, i, 1)&#xD;
		If (Asc(c) &amp;gt;= 65 And Asc(c) &amp;lt;= 90) _&#xD;
		Or (Asc(c) &amp;gt;= 97 And Asc(c) &amp;lt;= 122) _&#xD;
		Or (Asc(c) &amp;gt;= 48 And Asc(c) &amp;lt;= 58) _&#xD;
		Or Asc(c) = 38 _&#xD;
		Or (Asc(c) &amp;gt;= 45 And Asc(c) &amp;lt;= 47) _&#xD;
		Or Asc(c) = 58 Or Asc(c) = 61 _&#xD;
		Or Asc(c) = 63 Or Asc(c) = 126 Then&#xD;
			tmp = tmp + c&#xD;
		Else&#xD;
			tmp = tmp + "%" + Hex(Asc(c))&#xD;
		End If&#xD;
	Next i&#xD;
	urlEncode = tmp&#xD;
End Function&lt;/code&gt;&lt;/pre&gt;&lt;img src="http://www.cnblogs.com/hannover/aggbug/2328929.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hannover/archive/2012/01/23/2328929.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hannover/archive/2012/01/21/2328656.html</id><title type="text">解析notes自带的rtf javaapplet编辑器</title><summary type="text">在写b/s应用的时候，经常有检查域有效性的需求。我们一般的做法是用写javascript函数检查域的有效性，通过后再提交，不通过则提示出错。建一个最简单的表单，包含一个用javaapplet形式显示的 rtf域，名为MYRTF。在写b/s应用的时候，经常有检查域有效性的需求。我们一般的做法是用写javascript函数检查域的有效性，通过后再提交，不通过则提示出错。 现在有这样一个需求，就是在b/s上检查notes自带的rtf javaapplet编辑器内容。也就是说我们得想办法用js访问到这个notes编辑器。建一个最简单的表单，包含一个用javaapplet形式显示的 rtf域，名为MY.</summary><published>2012-01-21T13:10:00Z</published><updated>2012-01-21T13:10:00Z</updated><author><name>hannover</name><uri>http://www.cnblogs.com/hannover/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hannover/archive/2012/01/21/2328656.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hannover/archive/2012/01/21/2328656.html"/><content type="html">&#xD;
 &#xD;
&lt;div &gt;在写b/s应用的时候，经常有检查域有效性的需求。我们一般的做法是用写javascript函数检查域的有效性，通过后再提交，不通过则提示出错。建一个最简单的表单，包含一个用javaapplet形式显示的 rtf域，名为MYRTF。&lt;/div&gt;&lt;div &gt;&lt;p&gt;在写b/s应用的时候，经常有检查域有效性的需求。我们一般的做法是用写javascript函数检查域的有效性，通过后再提交，不通过则提示出错。 &lt;br /&gt;&lt;font size="2"&gt;现在有这样一个需求，就是在b/s上检查notes自带的rtf javaapplet&lt;a title="编辑" href="http://soft.zdnet.com.cn/files/list-0-0-76203-1-1.htm"&gt;编辑&lt;/a&gt;器内容。也就是说我们得想办法用js访问到这个notes&lt;a title="编辑" href="http://soft.zdnet.com.cn/files/list-0-0-76203-1-1.htm"&gt;编辑&lt;/a&gt;器。&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;建一个最简单的表单，包含一个用javaapplet形式显示的 rtf域，名为MYRTF。在web上预览，查看源文件得到如下html代码：&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1" width="100%"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td width="100%"&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;HTML&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;HEAD&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=GB2312"&amp;gt; &lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;SCRIPT LANGUAGE="JavaScript"&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;!-- &lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;document._domino_target = "_self";&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;function _doClick(v, o, t, h) {&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;var form = document._rtftest;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;if (form.onsubmit) {&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;var retVal = form.onsubmit();&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;if (typeof retVal == "boolean" &amp;amp;&amp;amp; retVal == false)&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;return false;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;var target = document._domino_target;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;if (o.href != null) {&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;if (o.target != null)&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;target = o.target;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;} else {&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;if (t != null)&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;target = t;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;form.target = target;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;form.__Click.value = v;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;if (h != null)&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;form.action += h;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;form.submit();&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;return false;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;function _getEditAppletData(){&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;var form = document._rtftest;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;for(i=0;i&amp;lt;form.elements.length;i++) {&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;if(form.elements[i].editorApplet != null) {&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;form.elements[i].value = form.elements[i].editorApplet.getText("text//html");&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;return true;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;// --&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;/SCRIPT&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;/HEAD&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;BODY TEXT="000000" BGCOLOR="FFFFFF"&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;FORM onSubmit="_getEditAppletData(); return true;" METHOD=post ACTION="/application/test/William/test.nsf/rtftest?OpenForm&amp;amp;Seq=1" NAME="_rtftest"&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;INPUT TYPE=hidden NAME="__Click" VALUE="0"&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;APPLET NAME="lnaMYRTF" CODE="&lt;a title="Lotus" href="http://soft.zdnet.com.cn/files/list-0-0-58991-1-1.htm"&gt;Lotus&lt;/a&gt;.notes.apps.editorapplet.EditorApplet.class" CODEBASE="/domjava" ARCHIVE="editor.cab" ALT="Editor" TITLE="rtftt" WIDTH="100%" HEIGHT="100%" MAYSCRIPT&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;PARAM NAME="cabbase" VALUE="editor.cab"&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;PARAM NAME="locale" VALUE="zh-cn"&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;/APPLET&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;INPUT TYPE=hidden NAME="MYRTF"&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;SCRIPT LANGUAGE="JavaScript"&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;!-- &lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;document._rtftest.MYRTF.editorApplet = document.lnaMYRTF;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;// --&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;/SCRIPT&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;/FORM&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;/BODY&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080" size="2"&gt;&amp;lt;/HTML&amp;gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;font size="2"&gt;可以看到 domino为MYRTF域产生了两个元素。一个名为lnaMYRTF的APPLET和一个名为MYRTF的hidden input。并且通过js语句将这两个元素关联起来（&lt;/font&gt;&lt;font color="#000080" size="2"&gt;document._rtftest.MYRTF.editorApplet = document.lnaMYRTF&lt;/font&gt;&lt;font size="2"&gt;）。 &lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;以上这些对我们来说只是表面现象，我们关心的问题在js函数&lt;/font&gt;&lt;font color="#000080" size="2"&gt;_getEditAppletData()&lt;/font&gt;中得到解答。我们只要使用applet的&lt;font color="#000080" size="2"&gt;.getText("text//html")&lt;/font&gt;&lt;font size="2"&gt;方法就可以得到applet的内容了。但是，用这种方法的得到的是rtf域中带格式的html内容（相当于innerHTML），如果我们想得到不带格式的文本内容可以用.getText("")。 &lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;以下就是我用来判断rtf&lt;a title="编辑" href="http://soft.zdnet.com.cn/files/list-0-0-76203-1-1.htm"&gt;编辑&lt;/a&gt;器是否为空的js语句：&lt;/font&gt;&lt;font color="#000080" size="2"&gt;Empty=(obj.editorApplet.getText("").replace( /^s/, "" ).replace( /s$/, "" )=="")&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;至此问题解决。&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;回过头再看html源文件，我们可以看到domino对表单提交的处理。表单在提交时调用&lt;/font&gt;&lt;font color="#000080" size="2"&gt; _getEditAppletData()&lt;/font&gt;函数寻找所有&lt;font size="2"&gt;有&lt;/font&gt;&lt;font color="#000080" size="2"&gt;editorApplet&lt;/font&gt;&lt;font size="2"&gt;关联的字段，然后将对应applet中的带格式的html内容赋值给对应字段，然后继续提交工作。&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/hannover/aggbug/2328656.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hannover/archive/2012/01/21/2328656.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hannover/archive/2012/01/21/2328406.html</id><title type="text">escape()、encodeURI()、encodeURIComponent()区别详解</title><summary type="text">JavaScript中有三个可以对字符串编码的函数，分别是： escape,encodeURI,encodeURIComponent，相应3个解码函数：unescape,decodeURI,decodeURIComponent 。下面简单介绍一下它们的区别1 escape()函数定义和用法 escape() 函数可对字符串进行编码，这样就可以在所有的计算机上读取该字符串。语法 escape(string)参数 描述 string 必需。要被转义或编码的字符串。 返回值 已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。说明 该方法不会对 ASCII 字母和数字进行编码.</summary><published>2012-01-21T01:52:00Z</published><updated>2012-01-21T01:52:00Z</updated><author><name>hannover</name><uri>http://www.cnblogs.com/hannover/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hannover/archive/2012/01/21/2328406.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hannover/archive/2012/01/21/2328406.html"/><content type="html">&#xD;
 &#xD;
&lt;div id="appShareOpt"&gt;JavaScript中有三个可以对字符串编码的函数，分别是： &lt;br /&gt;escape,encodeURI,encodeURIComponent，相应3个解码函数：unescape,decodeURI,decodeURIComponent &lt;br /&gt;。&lt;/div&gt;&lt;div id="app-share-content"&gt;&lt;br /&gt;&lt;p&gt;下面简单介绍一下它们的区别&lt;/p&gt;&lt;br /&gt;&lt;p&gt;1 escape()函数&lt;/p&gt;&lt;br /&gt;&lt;p&gt;定义和用法 &lt;br /&gt;escape() 函数可对字符串进行编码，这样就可以在所有的计算机上读取该字符串。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;语法 &lt;br /&gt;escape(string)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;参数 描述 &lt;br /&gt;string 必需。要被转义或编码的字符串。 &lt;/p&gt;&lt;br /&gt;&lt;p&gt;返回值 &lt;br /&gt;已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;说明 &lt;br /&gt;该方法不会对 ASCII 字母和数字进行编码，也不会对下面这些 ASCII 标点符号进行编码： - _ . ! ~ * ' ( ) &lt;br /&gt;。其他所有的字符都会被转义序列替换。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;2 encodeURI()函数 &lt;br /&gt;定义和用法 &lt;br /&gt;encodeURI() 函数可把字符串作为 URI 进行编码。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;语法 &lt;br /&gt;encodeURI(URIstring)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;参数 描述 &lt;br /&gt;URIstring 必需。一个字符串，含有 URI 或其他要编码的文本。 &lt;/p&gt;&lt;br /&gt;&lt;p&gt;返回值 &lt;br /&gt;URIstring 的副本，其中的某些字符将被十六进制的转义序列进行替换。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;说明 &lt;br /&gt;该方法不会对 ASCII 字母和数字进行编码，也不会对这些 ASCII 标点符号进行编码： - _ . ! ~ * ' ( ) 。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;该方法的目的是对 URI 进行完整的编码，因此对以下在 URI 中具有特殊含义的 ASCII 标点符号，encodeURI() &lt;br /&gt;函数是不会进行转义的：;/?:@&amp;amp;=+$,#&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;3 encodeURIComponent() 函数&lt;/p&gt;&lt;br /&gt;&lt;p&gt;定义和用法 &lt;br /&gt;encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;语法 &lt;br /&gt;encodeURIComponent(URIstring)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;参数 描述 &lt;br /&gt;URIstring 必需。一个字符串，含有 URI 组件或其他要编码的文本。 &lt;/p&gt;&lt;br /&gt;&lt;p&gt;返回值 &lt;br /&gt;URIstring 的副本，其中的某些字符将被十六进制的转义序列进行替换。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;说明 &lt;br /&gt;该方法不会对 ASCII 字母和数字进行编码，也不会对这些 ASCII 标点符号进行编码： - _ . ! ~ * ' ( ) 。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;其他字符（比如 ：;/?:@&amp;amp;=+$,# 这些用于分隔 URI 组件的标点符号），都是由一个或多个十六进制的转义序列替换的。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;提示和注释 &lt;br /&gt;提示：请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处，前者假定它的参数是 URI &lt;br /&gt;的一部分（比如协议、主机名、路径或查询字符串）。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;4 总结：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;通过对三个函数的分析，我们可以知道：escape()除了 ASCII &lt;br /&gt;字母、数字和特定的符号外，对传进来的字符串全部进行转义编码，因此如果想对URL编码，最好不要使用此方法。而encodeURI() &lt;br /&gt;用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent（指请求参数）应当是最常用的，它可以讲参数中的中文、特殊字符进行转义，而不会影响整个URL。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;5 示例：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;1 escape()&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;document.write(escape("&lt;a&gt;http://www.w3school.com.cn&lt;/a&gt;") + "&amp;lt;br &lt;br /&gt;/&amp;gt;")&lt;/p&gt;&lt;br /&gt;&lt;p&gt;document.write(escape("?!=()#%&amp;amp;"))&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;/script&amp;gt;输出：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;lt; type="text/javascript"&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;http%3A//www.w3school.com.cn&lt;/p&gt;&lt;br /&gt;&lt;p&gt;%3F%21%3D%28%29%23%25%262 encodeURI()&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;document.write(encodeURI("&lt;a&gt;http://www.w3school.com.cn&lt;/a&gt;")+ "&amp;lt;br &lt;br /&gt;/&amp;gt;")&lt;/p&gt;&lt;br /&gt;&lt;p&gt;document.write(encodeURI("&lt;a&gt;http://www.w3school.com.cn/My&lt;/a&gt; first/"))&lt;/p&gt;&lt;br /&gt;&lt;p&gt;document.write(encodeURI(",/?:@&amp;amp;=+$#"))&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;/script&amp;gt;输出：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a&gt;http://www.w3school.com.cn&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a&gt;http://www.w3school.com.cn/My%20first/&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;,/?:@&amp;amp;=+$#&lt;/p&gt;&lt;br /&gt;&lt;p&gt;对整个URL进行编码，而URL的特定标识符不会被转码。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;3 encodeURIComponent()&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;例1：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;document.write(encodeURIComponent("&lt;a&gt;http://www.w3school.com.cn&lt;/a&gt;"))&lt;/p&gt;&lt;br /&gt;&lt;p&gt;document.write("&amp;lt;br /&amp;gt;")&lt;/p&gt;&lt;br /&gt;&lt;p&gt;document.write(encodeURIComponent("&lt;a&gt;http://www.w3school.com.cn/p&lt;/a&gt; &lt;br /&gt;1/"))&lt;/p&gt;&lt;br /&gt;&lt;p&gt;document.write("&amp;lt;br /&amp;gt;")&lt;/p&gt;&lt;br /&gt;&lt;p&gt;document.write(encodeURIComponent(",/?:@&amp;amp;=+$#"))&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;输出：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;http%3A%2F%2Fwww.w3school.com.cn &lt;br /&gt;&lt;br /&gt;http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F &lt;br /&gt;&lt;br /&gt;%2C%2F%3F%3A%40%26%3D%2B%24%23&lt;br /&gt;例2：&amp;lt;script &lt;br /&gt;language="javascript"&amp;gt;document.write('&amp;lt;a &lt;br /&gt;href="&lt;a&gt;http://passport.baidu.com/?logout&amp;amp;aid=7&amp;amp;u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'&lt;/a&gt;"&amp;gt;退出&amp;lt;/a&amp;gt;');&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;对URL中的参数进行编码，因为参数也是一个URL，如果不编码会影响整个URL的跳转。&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/hannover/aggbug/2328406.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hannover/archive/2012/01/21/2328406.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
