代码之家  ›  专栏  ›  技术社区  ›  D.Bugger

XPages:一个模板,两个内存模型?

  •  0
  • D.Bugger  · 技术社区  · 6 年前

    我想为XPages应用程序维护一个主模板,尽管有两个不同的内存模型和属性。开发模板的模型(master)应该在磁盘上,没有JS优化和dojo压缩。派生模板中的模型将用于客户端应用程序,我们将其配置为内存、优化的JS和压缩的dojo。

    当在每个模板中设置不同的配置参数,然后刷新派生模板的设计时,两个模板最终都是相同的(这似乎是合乎逻辑的)。我的意思是:不可能禁止刷新XSP设置,就像可以在其他元素上设置一样。

    但即使存在这种可能性,它也不会工作,因为所有东西都应该重新编译(“干净”),否则压缩的JS和css就不能正确生成。我没有办法在派生模板上自动启动编译。

    还是有办法?

    谢谢!

    0 回复  |  直到 6 年前
        1
  •  0
  •   Frantisek Kossuth    6 年前

    源代码管理和分支应该是正确的处理方法: https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.0/com.ibm.designer.domino.ui.doc/wpd_srcecontrol_top.html

    传统的方法是“分支”模板。用于XSP开发的主模板,以及从第一个模板继承的第二个模板。在第二个模板中 set XSP.properties设计元素的“禁止设计刷新或…”属性。然后根据您的需要更改其内容。

    故事是这样的

    从前,有一个开发团队正在处理几个数据库,其中一些被标记为模板,以便进一步部署到生产环境中。一个开发人员希望重用另一个数据库模板中的一些元素。复制并粘贴到另一个数据库中。设计器提示:“是否要从模板继承设计…”.Ehm,不。所以设计器没有用模板名标记设计元素,没关系。此外,设计器设置了“禁止设计刷新…”标志。没人注意到,直到释放日!新的应用程序行为怪异,有些部分更新了,有些没有。很容易发现“禁止…”标志被设置并修复。但奇怪还在继续。你猜怎么着?此标志是在设计器的GUI中没有此复选框的元素上设置的(在本例中为Java源)。

    什么起作用了

    创建显示设计元素的特殊视图 http://www-10.lotus.com/ldd/ddwiki.nsf/dx/view-of-design-elements.htm .

    创建另一列,显示禁止刷新的元素。设置“将值显示为图标”。

    "Prohibit design refresh or replace to modify";
    @If( @Contains( $Flags; "P" ); 80; 0 ) : @If( @Contains( $Flags; "r" ); 204; 0 )
    

    创建使用选定文档的视图操作( ss.CurrentDatabase.UnprocessedDocuments 如果是有标记的, uiv.CaretNoteID GetDocumentByID 并调用此代码重置标志。

    Sub Prohibit(note As NotesDocument)
        On Error Goto errHandler
    
        Dim flags As String
        Dim flagsNew As String
        flags = note.GetItemValue( "$Flags" )(0)
        flagsNew = Replace( flags, "P", "" )
        If flags <> flagsNew Then
            note.ReplaceItemValue "$Flags", flagsNew
            note.Save True, False
        End If
    
        Exit Sub
    
    errHandler:
        Print "Error on " & note.UniversalID & " (" & note.GetItemValue( "$Title" )(0) & ")"
        Exit Sub
    
    End Sub
    

    免责声明: 在某些情况下,这会破坏元素的签名强制整个数据库的签名修复它。

    注意 :关于继承的提示-如果您回答 当从一个模板复制到另一个模板时-即使它是同一个数据库!

    结论

    所以,在你的情况下,做相反的-只是通过添加 "P" $Flags 领域 XSP.properties 文件。顺便说一下 $TITLE 字段是 "WEB-INF/xsp.properties" .

    享受吧!