LotusDomino应用开发课程第七章在Web中使用表单.doc_第1页
LotusDomino应用开发课程第七章在Web中使用表单.doc_第2页
LotusDomino应用开发课程第七章在Web中使用表单.doc_第3页
LotusDomino应用开发课程第七章在Web中使用表单.doc_第4页
LotusDomino应用开发课程第七章在Web中使用表单.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章 在Web中使用表单第7章在Web中使用表单17.1在表单中使用公式和JavaScript27.2在表单中使用Web元素67.2.1嵌入We b元素67.2.2创建特殊用途的模板表单67.2.3嵌入视图的例子77.2.4在表单和表单对象中使用HTML属性87.2.5RT F文本域的属性97.2.6Cookie97.3使用表单操作和热点107.3.1表单操作107.3.2使用热点127.4在表单内使用html137.4.1在域中使用Html137.4.2在表单内直接使用内置Html147.4.3显示附属图形文件147.4.4把文本域显示为文本区域177.5在表单内使用CGI变量187.6表单和搜索197.6.1定制视图搜索表单207.6.2定制搜索界面247.6.3定制Site Search 表单287.6.4定制搜索结果表单297.7其它特性317.7.1使用隐藏域317.7.2获取上载文件名称32表单是Notes 应用的基础,它们决定了数据在输入输出过程中的显示方式;在一定程度上,也决定了在数据库中信息是如何存储的。如果没有设计漂亮的表单,就不会有精美的Domino应用。如果你熟悉HTML的表单,开始时你可能会被Lotus Notes 的表单弄糊涂。和HTML表单一样, Notes的表单被用来从用户那儿获取信息(通常是通过可编辑的域)。和HTML表单不一样的是,Notes的表单也被用来显示已经获取的信息。这些信息存储在称为文档的容器之中。当你打开一个Notes表单时,填写完信息,选择保存。此时,在数据库中保存一个新文档。这个文档中包含了一个Form域,它的值是用来创建文档的表单名,当你打开文档时,这个表单被用来显示信息。文档是数据的一部分,表单是数据库设计的一部分。这和一个数据库中的记录(称为数据)与表(称为基础组织)二者之间的关系相类似。在HTML表单和Notes表单中,另一个不同的地方是访问的模式。在默认情况下,当你打开一个Notes文档时,它处于阅读模式(只读模式);读者所看到的都是在一个字处理器中创建的文档,不包含任何文本域或下拉列表。如果你将此文档改成编辑模式,则它有着明显的不同:可编辑文本域,下拉列表,以及其他元素都变得可见了,好像是在一个HTML的表单之中。然而,你所见到的并非是一个表单,确切地说,你所看到的文档,是通过一个表单显示出来的。当你想通过We b来创建一个新文档时,你通过打开表单OpenForm URL命令打开一个适当的表单。例如,下面的URL在“讨论数据库”中打开了MainTopic的表单。http:/localhost/discuss.nsf/MainTopic?openFormDomino 将Notes表单转化成一个HTML表单以响应你的请求。当然, Notes客户端应用还可以使用表单的没有HTML等价的另外一些特征,这些特征并不能在Domino的We b应用中工作。你可以通过提交表单来保存新文档。提交表单时会触发表单事件(通过一个CreateeDocument URL对象)。继而, Domino使用在CreateDocument URL中指定的表单将信息从HTML表单传输过来并保存在数据中。你不必考虑一个Notes表单是否适合Web。在你的Notes表单或文档中使用的大部分格式都能被Domino 服务器翻译成HTML语言。随着Domino新版本的推出,由Notes向Web的转换会更完善,更完美。我们在Web设计中,还要配合Html的很多特性,比如CSS等。7.1 在表单中使用公式和JavaScript在表单中使用公式和JavaScript主要体现在几个方面:1) 窗口标题公式2) html首页内容3) html Body属性4) JS Header5) 表单在Web上支持的其他事件6) 域公式和事件图表 1 表单事件中使用公式1 窗口标题公式在这里以字符串的形式制订窗口标题,在Web上对应为HTML的标签的内容。显示在浏览器的标题栏里。2 html首页内容在Web上设置标签中的内容。也可以在表单中使用“$HTMLHead”域设置此标签的内容。下例是在Designer中用公式指定一个JavaScript脚本库global.js。如果在字符串中使用引号,请加转义符反斜杠“”.公式WebDbName获得符合Web格式的数据库文件名。图表 2 html首页内容使用公式或者在公式中使用“ ”来应用字符串,这样在字符串中间就不需要转义符了。这两种做法效果是相同的。在浏览器IE(后面所用浏览器都是IE)中预览,然后查看源文件:图表 3 在浏览器中查看Html首页内容3 Html Body属性设置标签的属性。遵循公式的语法。下例设置Body的背景图片。图表 4 表单中的Html body属性在Web中显示(截取局部)图表 5 在浏览器中查看Body属性查看源文件4 JS Header在Html页面中定义应用于本页面的JavaScript代码,遵循JavaScript的语法。而不是公式的语法。在这里定义的JavaScript函数和变量可以在整个表单中使用。图表 6 在JS Header中使用JavaScript查看Web源程序图表 7 在浏览器中查看JS Header产生的Script标签5 表单在Web上支持的其他事件作为Web应用程序,我们一般在公式的这些事件中使用JavaScript代码,遵循JavaScript的语法。如:OnLoad,OnUnLoad,OnClick,OnSubmit以OnLoad为例图表 8 在onLoad事件中使用JS Header中定义的JavaScript函数在OnLoad里面使用了上面定义的showCopyRight函数,每当转载后就显示版权信息。图表 9 onLoad函数的效果6 域公式和事件与的缺省值公式、计算值公式、输入转换公式、输入校验公式等都可应用Web ,见第6章。下面以“IBM认证系统”的studentinfo表单为例,在输入姓名的长度应大于等2,小于等于4。输入转换公式:图表 10 域的输入转换公式输入校验公式: 图表 11 域的输入验证公式在Web中预览,只输入一个字,前后有多个空格:“ 杨 ”图表 12 域输入验证公式效果保存后返回下面结果注意:这个输入验证是在服务器上发生的,不是在客户端,如果提交的数据流比较大,效率不太高。后面会讲解在浏览器中用JavaScript校验。7 $Return域$Return是一个特殊的域,它的值决定了用户递交了表单后将会看到什么。如果返回值是包含在方括号中间的URL,用户的浏览器将直接指向此URL,否则, Domino仅仅向浏览器传输值。只有执行了下述命令后才会启用$Return域的作用。Command (FileSave);Command (FileCloseWindow)我们可以在$Return域中写下列内容,表单提交后,打开另外一个URL。图表 13 $Return域中的公式如果不使用$Return域,表单提交后,仅仅显示文字“表单已处理”。7.2 在表单中使用Web元素在Domino中提供了许多不同类型的设计元素,他们都非常有用。但是,当配合着使用这些元素时,常常变得更为有效。配合使用Domino的设计元素的最常用的方法是在一个表单内嵌入多种元素。嵌入的元素包括视图、导航器、大纲和文件上载控件。7.2.1 嵌入We b元素在表单中和其他设计元素,例如大纲,一起配合使用的最简单的方法是直接嵌入元素。例如,你可以创建一个小的水平的大纲,并嵌入到每一个表单中,以帮助用户使用数据库。若使用这种方法,通过一个OpenForm URL打开表单来显示此大纲(或其他设计元素)。可以使用“创建菜单”。图表 14 在表单中嵌入元素7.2.2 创建特殊用途的模板表单你可以创建一些特殊的表单,不但可以使用OpenForm的URL,也可以使其他URL,例如OpenView或OpenNavigator 来打开这个表单。1 $ViewTemplate你可以让Domino总是使用一个表单来显示一个特殊的视图。为此,给此视图命名为:$ViewTemplate for ViewName在此,ViewName是视图的名字或别名。例如,一个用来显示All by Date视图的表单可以命名为$ViewTemplate for All by Date。当你创建这种$ ViewTemplate的类型的表单时,必须在表单中嵌入视图本身(或者,你也可以包含一个名为$ViewBody的域来替换嵌入的视图)。2 $ViewTemplateDefault假设你的Domino数据库包含2 0个不同的视图,而你想让他们具有一致的风格,你可以创建一个$ $ ViewTemplate表单,并做1 9份拷贝,每一个对应一个视图,但这会非常费时。相反,你可以创建一个简单的表单,用来显示数据库内的任何视图,仅仅只须给表单命名为$ViewTemplateDefault.当你创建这种$ $ ViewTemplate表单时,嵌入一个视图元素(或$ViewBody域),而不必指定一个特殊的视图。3 $NavigatorTemplate你可以让Domino总是使用一个表单来显示一个特殊的导航器。为此,给表单命名为:$NavigatorTemplate for NavigatorName4 $NavigatorTemplateDefault你可以创建一个简单的表单,用来显示数据库内的任何导航器,仅仅只须给表单命名为$NavigatorTemplateDefault.5 联合表单你可以使用联合的表单名或别名来创建多重目的的表单。例如,如果你给表单命名为:$ViewTemplateDefault | $NavigatorTemplateDefault缺省地,使用同一个表单来显示数据库中的任何视图或导航器。7.2.3 嵌入视图的例子在数据库中创建一个$ViewTemplateDefault表单,嵌入一个$ViewBody域。图表 15 $ViewTemplateDefault表单当打开视图时,就使用这个表单显示图表 16 缺省模板表单的显示效果7.2.4 在表单和表单对象中使用HTML属性你可以在表单中为表单和表单中的每一个元素指定HTML属性。在Domino 中这样做而不是编辑一个静态的HTML文件的好处是你可以使用Notes的公式语言来决定HTML属性。如果你想使表单的HTML根据用户或域值或其他元素的不同而改变的话该属性非常有用。表单的html 属性图表 17 表单的Html属性域的html属性图表 18 域的html属性表单的“Html首页内容”输入在标签之间的内容。也可以在表单中用$Htmlhead代替。我们可以在表单“Html首页内容”中增加一个标签:每个10秒对当前页面刷新一次。查看源文件:图表 19 使用Meta标签7.2.5 RT F文本域的属性你可以通过在域的HTML属性中指定行数和列数来控制RT F文本域的大小。在其Html属性中指定下述公式:rows=10 cols=40 wrap=virtual在html源文件的值如下:7.2.6 Cookie使用一个标记,设置Cookie和一个CGI域,并返回值。Cookie是当客户端要求一个特殊的URL时,HTTP服务器传输给客户端的一些信息。然后,当客户端在同一域内请求其他的URL时,客户端为此域传输给服务器所有的Cookie s . Cookie数据被保留在客户端机器上的浏览中。当用户打开一个Domino表单时,你可以使用标记的HTTP - E Q U I V属性来设置一个Cookie。为此,创建一个HTML的H e a d公式,它的值为如下格式: 为了得到Cookie数据,创建一个名为HTTP _ COOKIE的多值文本域( HTTP _ COOKIE是一个CGI变量)。在html首页属性中写入:在表单上创建一个“HTTP_Cookie”域。在浏览器中打开表单,在Http_Cookie域中会看到Cookie的值图表 20 使用meta标记设置Cookie观察其结果,除了用户设置的外,Domino自动增加了一个Cookie,名字是DomAuthSessId,用于Domino认证。7.3 使用表单操作和热点7.3.1 表单操作可以创建表单操作按钮,用于Notes客户端,We b浏览器,或者两者都用。对于Notes客户端的应用,你可以配置表单操作,并在菜单条中显示,但在We b浏览器中的应用并不支持这一点。对Domino的操作按钮有两种类型的使用方式。有一种缺省按钮的方式,当你在数据库属性中设置了“ Web 访问:Use Javascript when generating pages”,即是这种结果。这一部分描述了缺省的方式。另外一种方式见后面的章节。缺省地Domino将操作按钮转换为简单的URL链接或命令。某些类型的公式比较容易转换为URL。但有些公式,例如DialogBox,因为它们没有相类似的对应URL而不被支持,如果你创建了一个表单操作按钮,但它不能被转换为一个URL链接,Domino将帮你隐藏它。尽管Domino并不支持直接使用LotusScript的按钮,但它可以显示一个按钮,此按钮使用command ( ToolsRunMacro)公式来运行LotusScript或J a v a代理。当然,这些代理只能使用We b支持的特性。对于在Domino下运行的代理, LotusScript的前端类是不可用的。例如,你不能创建一个运行Domino代理的按钮,它使用Notes U I D o c u m e n t . C u t ( )和U I D o u c m e n t . p a s t e ( )。下表显示了在Domino应用中非常实用的表单操作按钮。图表 21 常用的表单操作操作例子创建新文档command(Compose;”StudentInfo”)保存文档command(filesave)编辑当前文档Command(Edit Document)删除当前文档Command (Editclear)使用浏览器打开URLURLOpen(“”)打开一个视图Command(OpenView;User Profiles)在视图中打开一个特殊的文档Command (OpenView;User Profiles; Username); Command(OpenDocument);运行代理Command (ToolsRunMacro; Cleanup)打开导航command (OpenNavigator; Main Menu)提供在线帮助Urlopen( / +WebDbName+ /$help?Openhelp)以“保存”为例,转化成的URL为标记:图表 22 表单操作的转化结果调用了一个_doClick函数:图表 23 操作的公用_doClick函数在代码的最后调用了一个表单submit提交函数。在提交之前设置了target属性和域_Click的值。在Designer为“StudentInfo”表单创建的操作如下:在浏览器的显示效果如下(有些操作被隐藏了):每个操作被转换成标记后,显示在表格里。但是这个样式不太美观。设想用的属性修改其样式,发现该表格没有名称,如果修改其样式,则表单的所有表格都回发生变化。经过仔细观察表单产生的html代码,发现操作使用的表格在最上面。可以用下面的JavaScript代码修改操作条的样式:function setActionBarStyle() var coll = document.all.tags(table); var bg=#c0c0c0; var bg2=#FFFFFF;if (coll!=null)var t=coll0; /第一个表格var r=t.rows0;t.border=0;t.borderColor=bg;=actionbar;t.bgColor=bg2;r.bgColor=bg; t.cellPadding=1; t.cellSpacing=1; t.style.color=#FFFFF0; 具体设置方法是:把这个函数放在表单的“JS Header”事件中,或者创建一个JavaScript库,在表单的“Hmtl首页内容”中引入。在表单的onLoad事件中调用该函数。图表 24 设置表单操作的新样式重新刷新页面后,显示如下:图表 25 改变后的表单操作样式去掉了表格的边框。7.3.2 使用热点在表单中可以创建下列类型的热点:图表 26 创建热点在Web中支持链接热点,按钮和操作热点。l 链接热点在Web上转换为标记。l 操作热点的转化方式和表单操作相同。l 按钮,在Web上转换为标记,附带一个OnClick事件。下面的表单上有4个操作按钮:图表 27 表单中的热点按钮在浏览器中转化为图表 28 热点按钮转化成的html代码7.4 在表单内使用html7.4.1 在域中使用Html有时为了达到一些特殊效果,我们需要在表单中直接使用HTML,下面以一个列表为例子,假设你有一个ProjectSkills的多值域,用户使用下拉列表框中选定的值来填充它,之后,当用户使用只读模式打开该文档的时候,选定的值被显示时, Notes会让你选择某个老式的定界符,例如:Project Management ;Systems Analysis;Network Engineering创建一个特别的计算域,令它在编辑状态时隐藏,使用下面的公式把这些值转换为HTML: + ProjectSkills + 这个公式在ProjectSkills域的开始和结尾添加列表标签,如果你将这个域设置为每行显示一个值,你得到的结果如下:Project ManagementSystems AnalysisNetwork Engineering在Web浏览器中转换为列表:Project ManagementSystems AnalysisNetwork Engineering方括号和尖括号在Domino中代表直接传递到浏览器的HTML代码,作为结果,在浏览器中以加重表单的方式列出技能项目。如果你希望你的表单在Notes中和在浏览器中同样吸引人,请注意保证这个域对Notes客户端用户隐藏。7.4.2 在表单内直接使用内置Html为了向浏览器直接传送HTML代码,我们还可以把html代码之间写在表单内,选择这些文本,在“文本”菜单中选择“内置Html”。图表 29 使用内置html 文本下图中的灰色代码就是“内置Html”,直接在浏览器中显示,他们的含义是创建了一个表格。图表 30 内置html文本的格式7.4.3 显示附属图形文件当我们在表单中嵌入“文件上载控制”后,在浏览器中可以向文档上载附件。图表 31 表单中使用文件上载控制使用Domino表单嵌入的控制上载的文件被自动附加在创建的Notes文档中。默认情况下, Domino把文件附件显示为一个图标,该图标连接到附加的URL中。附加的URL采用如下形式:http:/Server/database/view/document/$file/filename根据文件类型的不同,点击一个指向文件的链接将有不同的效果。例如,点击一个指向典型的二进制文件的链接将引发浏览器显示一个提示询问你是想用某个应用程序打开该文件还是想把它保存在本地的硬盘上。点击一个指向HTML文件的链接,将引起浏览器显示HTML文件内容,这与把HTML文件保存在服务器的文件系统中效果是不一样的。对于We b兼容的图形文件,比如J P G形式或G I F形式,我们希望能够直接看到他们的内容。 最简单的处理办法是创建一个计算域,这个域使用AttachmentNames函数产生一系列的标签,每个附属文件一个。(AttachmentNames函数返回所有附属文件的列表,类似地,AttachmentLengths函数返回所有附属文件的长度)。这种方法的问题在于并非每个文件都是图形文件,事实上,并非每个附属图形都是We b兼容的形式,某些图形可能是T I F,P C X或者B M P形式。我们需要做的是只对那些J P G或G I F形式的文件产生标签而忽略其他文件格式。我们在“InfoContentForm”表单的下部创建了一个显示时计算域“InfoPhoto”,它产生一些列的标签,而前只针对Web兼容的图片。下图显示了它的效果。图表 32 直接显示文档附属的图形文件可以看出,文档中有3个附件,只为Web支持的图形创建了标签。下面是InfoPhoto的计算公式:1) NoPreviewMsg := 图片(无);2) SupportedImages := gif:jpeg:jpg:jpe:jfif:pjpeg:pjp:bmp; 3) SupportedImages:=UpperCase(SupportedImages);4) InfoAttNames:=AttachmentNames;5) tmp:= UpperCase(InfoAttNames) + . + Right(InfoAttNames; .);6) If(Ends(UpperCase(InfoAttNames); SupportedImages); ; Attachments = 0; Return(NoPreviewMsg); Return(NoPreviewMsg);7) View := 0;8) DocID := Text(DocumentUniqueID);9) n := 1;10) files:=;11) While(n = Elements(SupportedImages);12) tmp2:=Trim(Left(tmp;.+SupportedImagesn)+ Right(tmp; SupportedImagesn);13) files:=files:tmp2;14) n := n + 115) );16) files:=Trim(files);17) url:=;18) url 下面我们逐行对公式进行分析。并假设有4个附件: aaa.gif”: bbb.jpg”: ccc.bmp”: ddd.gif公式的第一行是一个没有图片时的提示信息,第二行列表类型的临时变量存储了支持的图形文件的扩展名。第三行把临时变量SupportedImages中的值转为大写,这样便于进行字符串比较。第四行获取所有的附件的名称,临时变量InfoAttNames的值就是:aaa.gif”: bbb.jpg”: ccc.bmp”: ddd.gif第5行把所有的附件名称转换为大写,在末尾再加一个扩展名,tmp结果如下:AAA.GIF.GIF : BBB.JPG.JPG : CCC.BMP.BMP : DDD.GIF.GIF第6行,用if和Ends函数分析文件名,判断是否有支持的文件类型。如果没有支持的文件类型,或者附件个数为0,终止公式。第7行,把“0”赋值给临时变量View,存储视图的文件名,0是视图的占位符,匹配任何视图。第8行,获得文档的唯一ID。第9行到第15行是While函数。遍历SupportedImages中的每一个值,当第一次循环时,left函数的返回值为: “AAA”:“”:“”:“DDD”Right函数的返回值为:“.GIF”:“”:“”:“.GIF”做加法后使用trim去掉空值,tmp2结果为“AAA.GIF”:“DDD.GIF”。 后缀名为GIF的图形文件被提取出来。循环执行完毕后,所有被支持的文件都被提取出来,存储在临时变量Files中。然后把Files的值和标签进行组合,注意字符串的首位家方括号,把域的值作为HTML代码。第18行是计算域的主公式,把计算的结果赋值给计算域InfoBody。有时可能对用户附加在文档中的文件(比如一个图形)有其他用途,当文档被显示的时候,你不想显示附件的图标。为了隐藏上载的附件,在表单中创建一个名为$V2AttachmentOptions的域并将其值设为0。7.4.4 把文本域显示为文本区域默认情况下,当Domino把一个表单转换为HTML形式的时候,它把RT F文本域转换为标签,把文本域转换为标签。通常情况下这种转换工作良好,文本域的值较短,可作为姓名或类别, RT F域的值较长,可作为信件的主体。但是,偶尔也有例外,例如,假设你有一个包含一段文字或者更多的Description域,而且你想把这个域包含在视图中,则你就不能使用RT F域,因为RT F域的内容不能显示在视图中。那么,开发者应该怎么做呢?你可以使用内置HTML文本创建一个文本域和一个界面。首先,你应该了解Domino不管你使用的文本域是自动产生的还是人工创建的,只要这个域的N A M E属性与设计表单时创建的域的属性相同即可。以“模拟练习题选择题表单”为例,题目有时比较长,如果用文本域,输入空间比较小,使用“内置Html文本”创建一个文本区域,name属性与题目名称域“MQuestion”相同。设置隐藏条件,在编辑时显示文本区域,只读模式时隐藏。图表 33 把单行文本域显示为文本区域在浏览器中创建题目:图表 34 文本域变文本区域的显示效果内置HTML文本创建了一个5行高70列宽的文本区域,允许用户有足够的空间填写描述。注意文本区域的n a m e属性被设置为MQuestion,这样,当你在文本区域中输入一个值并提交表单的时候,你输入的值被保存在文档的MQuestion域中。“内置Html文本”中有一个,是一个计算文本,其公式是:MQuestion如果不使用计算文本,每次编辑或退出文档的时候将丢失原来的MQuestion。计算文本保证当你编辑一个存在的题目文档的时候,原来的MQuestion总是出现在文本区域中,如果不编辑文本区域并提交表单的时候,MQuestion域保持不变,当你对文本区域进行了编辑的时候,该域的内容被更新。7.5 在表单内使用CGI变量CGI变量是能把服务器端信息传递到其他CGI程序或脚本中的环境变量。典型情况下,当用户提交表单的时候, CGI变量被设置,处理表单的CGI程序从环境中获得这些变量。CGI程序可能是一个P e r l脚本,C程序,Domino CreateDocument URL,一个LotusScript代理或其他能够处理一个表单的程序。在Domino中捕获CGI变量有下面两种方式:l 在Domino表单中创建一个特别的域,和CGI变量的名称相同。l 在LotusScript或J a v a中获取一个D o c u m e n t C o n t e x t对象并访问它的属性。为了在域中捕获CGI变量,创建一个以CGI变量命名的文本域(例如, HTTP _ COOKIE)。一般地,在编辑状态下将该域设置为隐藏,这样用户就不能改变域中的值。当用户打开表单的时候, HTTP _ COOKIE环境变量的实际值变成了域中的默认值。在第6章列出了所有的CGI变量。我们在使用CGI域的方式和其普通域相同的,可以设置为可编辑,计算,创建时计算和显示时计算。图表 35 表单中使用CGI变量7.6 表单和搜索Domino提供了一个支持搜索功能的命令ViewShowSearchBar,在视图上可以使用此命令创建一个搜索操作。执行后其界面如下:图表 36 缺省的搜索表单观察其URL命令:http:/syzx-server/LotusCert2005_2.nsf/8f3239d72324fc7d4825707500278c0a/$searchForm?SearchView数据库名称后是被搜索视图的唯一标识符,视图后是缺省的$searchForm搜索表单,?后面是SearchView命令。为了提供更友好的搜索界面,我们可以定制搜索表单。7.6.1 定制视图搜索表单当你选择一个连接到视图的搜索链接的时候, Domino在当前数据库中寻找一个名为$Search的表单。如果存在, Domino显示这个表单,否则,它显示默认的视图搜索表单。搜索表单的A C T I O N属性依赖于搜索的视图。例如,由Domino产生的视图的搜索表单可能包含如下标签:这就是我们在定制搜索表单过程中需要的标签。但是,当Domino显示一个规则表单的时候,对表单的缺省操作使用CreateDocument URL,下面是两种避开这个问题的主要方法:l 方法1:使用你自己的标签覆盖由Domino产生的标签。l 方法2:使用$Return域或者WebQuerySave代理改变当用户按下S u b m i t按钮时Domino的反应。第一个方法是用内置Html文本,只需要把下面的内置HTML文本包含在你的$Search表单的顶部:这将终止由Domino产生的模块并开始一个新的模块。这个操作的URL包含在当前目录中,因此如果用户显示$Search表单使用下面的URL:Http:/Server/8f3239d72324fc7d4825707500278c0a / $SearchForm?SearchView则这个操作URL转换为:Http:/Server/8f3239d72324fc7d4825707500278c0a ? SearchView使用第二种方法,你使用一个$Return域或者WebQuerySave代理分析用户的输入并把浏榄器指向Search View URL。例如, Domino的“Search Site”模板的$Search表单使用下面的$Return公式:DBName:=WebDbname;/+DBName+?SearchSite&Query=+Query+&SearchOrder=+Text(Sort)+&SearchMax=+Text(MaxResults)+&SearchWV=+If(ExactMatch=;TRUE;FALSE)+&SearchThesaurus=+If(UseThesaurus=;FALSE;TRUE)+因为这种方法使用了HTTP的G E T方法而不是P O S T方法,它导致了很长的可读性很差的URL。但是,另一方面,这种方法使你可以使用Notes公式语句计算查询自变量的值。坦率的说,大部分用户并不能很熟练地使用Domino查询语法组成如下查询:FIELD Title CONTAINS domain OR FIELD Categories CONTAINS lotus但是这些查询可能非常有用而且有效率。当你只对某个特定的域感兴趣的话为什么要对每个文档进行全文搜索呢?你可以通过添加选项定制$Search表单使用户搜索特定的域变的简单,从而可以使用$Return公式(或WebQuerySave代理)根据用户的输入计算一个Domino搜索URL。在定制搜索的时候,我们需要在$Search表单中增加下面的域图表 37 搜索表单中的预定义域Optional argumentsDescriptionDefault ValueQuery搜索字符串无SearchMax共能返回项目的最大数目;0 = 不受限制无,但是缺省值可以在Web站点文档中设置SearchWv包含衍生词:TRUE(或 1)或 FALSE(或 0)FALSESearchOrder1 = 按相关性2 = 按日期升序3 = 按日期降序4 = 使用视图顺序 (仅使用SearchView时)1SearchThesaurus使用同义词:TRUE(或 1)或 FALSE(或 0)(R5 搜索引擎忽略此选项)FALSESearchFuzzy使用模糊搜索:TRUE(或 1)或 FALSE(或 0)FALSESearchEntry用于每个结果项目的表单名称(for SearchDomain only)ResultEntryStart开始文档以翻开书页;0 = 未翻开书页0Count返回翻开书页的页数;0 = 未翻开书页0Scope搜索范围:1 = 限于 Notes 数据库2 = 限于文件系统0 = 都包括0搜索运算符如下表:搜索运算符是一些词和字符,用来指示 Notes 搜索特定组合的词、域、日期和数字。在 Notes 中,搜索运算符的工作方式与在大多数 Web 搜索引擎中的方式相同即,基于布尔逻辑同时具有某些强大的功能增强。例如,可创建一个搜索,用于搜索出现在同一文档中的两个词,并指定这两个词的靠近程度、它们必须位于哪个域以及它们的精确大小写形式。此外,还可指定应该将某个词视为比另一个词更重要,以便包含第一个词的文档更靠近搜索结果列表的顶部。此外,还可以使用通配符搜索词的一部分。 运算符是 Notes 中的保留词。如果希望像搜索正常文本一样搜索运算符(例如,在 Gene and Joan 这样的短语中),则必须用引号将该短语引起来。要在搜索中使用运算符,应按下表所示格式在“搜索”栏中的文本输入框中输入该运算符。图表 38 搜索条件运算符运算符描述和样例Notes视图Notes网域Web视图和网域Contians 包含=告知 Notes 此运算符之前的域必须包含其后面的文本。“CONTAINS”与其两边的单词之间应有空格。样例:Projectname CONTAINS top secret 将查找其 Projectname 域中包含 top secret 一词的文档。是是否field fieldnameFIELD fieldnamefieldname(使用方括号)表示“搜索该域”。必须通过域名指定要搜索的域。样例:以下是查找其 Projectname 域中包含短语 top secret 的文档的三种方式:FIELD Projectname CONTAINS top secretfield Projectname CONTAINS top secretProjectname CONTAINS top secret注意 Notes 将文件附件存储在 $FILE 域中。是否是,仅适用于视图搜索( ) parentheses决定 Notes 将以哪种顺序处理查询区段。在括号内的查询部分将优先于括号外的部分进行处理。样例:(FIELD Projectname CONTAINS top secret OR FIELD Title CONTAINS tuna) AND (Field body CONTAINS cat OR Field revdate 01/01/2004) 将返回其 Projectname 域中包含 top secret 一词或者其标题域中包含 tuna 一词;并且 body 域中包含 cat 一词或者 revdate 域中包含一个大于 01/01/2004 的日期的文档。是否是且 AND &查找包含所有由 AND 连接的条件或单词的文档。样例:cat AND dog AND fish 将查找包含这三个单词的文档。是是& 不适用或OR | ACCRUE, (逗号)查找包含任意一个条件或单词的文档,并且返回结果按搜索项在文档中的出现次数进行排列。样例:cat OR dog OR fish 将查找至少包含其中一个单词的文档。注意 按相关性进行排序时,ACCRUE 要比 OR 效果好些。是是是NOTnot!对查询取非。可在词间输入 NOT:cat AND NOT dog 查找包含cat 一词的文档,但是,如果它们也包含 dog 一词,则不查找这些文档。(cat OR dog) AND NOT (fish OR frogs) 查找包含cat 或 dog 一词的文档,但是,如果它们也包含 fish 或 frog,则不查找这些文档。(cat AND dog) AND NOT fish 查找包含cat 和 dog 两词的文档,但是,如果它们也包含 fish 一词,则不查找这些文档。可在任何域名前输入 NOT:NOT Projectname CONTAINS top secret 查找其 Projectname 域中不包含 top secret 一词的文档。不能在数学符号 =、= 后输入 NOT;也不能在日期或数字前输入 NOT。例如,date1 = NOT 12/25/2002 不是正确的查询。是是是 为运算符(如 AND、OR、CONTAINS 等)加上引号可使 Notes 将其视为普通词。样例:rock and roll 将查找包含短语 rock and roll 的文档。是是是PARAGRAPHparagraph查找 PARAGRAPH 两边的单词出现在同一段落中的文档,并按单词的靠近程度进行排列。样例:car PARAGRAPH wheels 将查找car 和 wheels 出现在同一段落中的文档,并且按这两个单词在段落内的靠近程度进行排列。是是否SENTENCE句子查找 SENTENCE 两边的单词在同一句子中的文档,并按单词的靠近程度进行排列。样例:car SENTENCE wheels 将查找car 和 wheels 出现在同一个句子中的文档,并按这两个单词在句子中的靠近程度进行排列。是是否?这是一个通配符。可代表任何单个字母。不适用于日期或数字。样例:?one 将查找包含 bone、cone、done、gone(以及其他任何以 one 结尾的四个字母的单词)的文档。将查找包含 stack、clock、 stick、truck、rack、rick、rock 的文档是是是*这是一个通配符。可代表任意多个字母。不适用于日期或数字。样例:*one 将查找包含 bone、cone、clone、crone、done、drone、gone、telephone(以及其他任何以 one 结尾的任意

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论