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

问题描述 投票:0回答:1

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

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

但即使有这样的可能性,它也不会起作用,因为所有内容都应该重新编译(“干净”),否则压缩的JS和css没有正确生成。我发现无法自动在派生模板上开始编译。

或者有办法吗?

谢谢!

xpages domino-designer-eclipse
1个回答
0
投票

源代码控制和分支应该是处理它的正确方法: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设计元素。然后更改其内容以满足您的需求。

Here's the story

曾几何时,有一个开发人员团队在几个数据库上工作,其中一些被标记为模板,可以进一步部署到生产环境。一位开发人员希望重用另一个数据库中的一些元素 - 模板。复制并将其粘贴到另一个数据库中。设计者提示:“你想从模板继承设计......?”。嗯,不。所以设计师没有用模板名称标记设计元素,没关系。此外,设计师设置了“禁止设计刷新......”标志。直到发布日,没有人注意到!新应用程序表现得很奇怪,有些部分得到了更新,有些则没有。很容易发现“禁止......”标志被设置并修复它。但奇怪的是继续。你猜怎么着?此标志设置在设计器GUI中没有此类复选框的元素上(在本例中为Java源代码)。

What worked

创建显示设计元素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.CaretNoteIDGetDocumentByID仅用于聚焦)并调用此代码重置标志。

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

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

注意:关于继承的提示 - 如果在从模板复制到模板时回答“否”,它会设置标记“禁止...” - 即使它是同一个数据库!

Conclusion

所以,在你的情况下,反过来 - 只需通过将"P"添加到$Flags文件的XSP.properties字段来设置标志。顺便说一下,它的$TITLE场是"WEB-INF/xsp.properties"

请享用!

© www.soinside.com 2019 - 2024. All rights reserved.