标签: xpages-ssjs

WebContent/WEB-INF/lib中的JAR文件是否可用于Domino Designer中的Java设计元素?

使用Domino Designer 8.5.3时,我使用Java设计元素添加了一堆自定义类.我希望在我的自定义类中使用第三方JAR,就像在xPages SSJS中使用外部JAR一样,通过Package Explorer:

的WebContent - > WEB-INF - > LIB

但是我的自定义类没有选择JAR.

这是一个已知的限制还是我的配置搞砸了?

lotus lotus-domino xpages xpages-ssjs

4
推荐指数
1
解决办法
3415
查看次数

获取NotesXSPDocument中的所有项目

在我的Notes数据库中,我在保存文档时执行审核.在LotusScript中非常简单.我从服务器获取原始文档(oDoc),然后在我修改的文档(mDoc)中,我做了一个Forall循环,它获取每个项目的名称; mDoc.items中的forall项.从oDoc中获取相同的项目,使用新项目作为参数执行一个函数,该函数将运行一个case语句,该语句将查看它是否是我们关心的字段.如果是这样,我用"When","Who","What field"和"New Value"更新文档中的一组列表值.

我在服务器端脚本中这样做.在尝试这个时,我发现了一些有趣的东西;

currentDocument是NotesXSPDocument,包含刚刚更改的所有内容.

currentDocument.getDocument()包含更改前的值.它还返回一个NotesDocument,它包含我可以运行的"items"字段.

事实是,我在NotesXSPDocument中需要类似的东西.在迭代循环中有没有办法从那里获取所有项目的名称和值?

这是破碎的代码.(目前它正在浏览NotesDocument项目,但这些是旧的值.我宁愿走下XSP文档项目)

function FInvoice_beginAudit() {
  var original_doc:NotesDocument = currentDocument.getDocument();
  var oItem:NotesItem;

  var oItems:java.util.Vector = original_doc.getItems();
  var iterator = oItems.iterator();
  while (iterator.hasNext()) {
    var oItem:NotesItem = iterator.next();
    item = currentDocument.getItemValue(oItem.getName());
    if (oItem == undefined) {
      var MasterItem =  ScreenAudit(doc,item,True)
      if (MasterItem) { return true }
      } else {
      if (item.getValueString() != oItem.getValueString()) {
        var MasterItem =  ScreenAudit(doc,Item,True);
          if (MasterItem) { return true }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript xpages xpages-ssjs

4
推荐指数
1
解决办法
1046
查看次数

使用Java而不是SSJS时,量化性能提升

在开发XPage应用程序时,主要使用Java方法和bean而不是服务器端JavaScript(SSJS)似乎变得非常流行.SSJS当然需要更长的时间来执行,因为代码必须在运行时进行评估.但是,在使用Java时,是否有人可以提供有关QUANTITATIVE性能提升的信息?是否存在执行时间差异的基准,例如,取决于SSJS代码的长度或使用的函数?

xpages xpages-ssjs

4
推荐指数
3
解决办法
348
查看次数

在SSJS中使用HashMap.put方法时性能下降

在我的XPages应用程序中,我经常使用SSJS对象(com.ibm.jscript.std.ObjectObject)来缓存数据.如果我使用java.util.HashMaps来检查性能是否有所提高,我会对以下代码片段(SSJS)的执行时间进行基准测试:

SSJS基准测试的代码片段

所有三个代码片段都是相同的:它们创建并填充SSJS对象或具有不同类型数据/对象的HashMap.对于每个片段,我测量了超过1000次运行的平均执行时间,其中n(=片段中的最大循环索引)为1000000(100万).基准测试是使用java.lang.System.nanoTime在Domino 9.0.1服务器上执行的.

所述的比率执行时间如下:

  • T [HashMap]/T [SSJS对象] 154%
  • T [HashMap with put method]/T [SSJS Object]的266%
  • T [HashMap with put method]/T [HashMap] 172%

换一种说法:

  • 填充HashMap比填充SSJS对象花费的时间长约54%
  • 使用put方法填充HashMap比填充SSJS对象长约166%
  • 使用put方法填充HashMap比使用SSJS填充HashMap需要大约72%"." 符号

我的问题如下:

  1. 我经常看到SSJS代码,其中HashMaps用于存储数据.如果它们提供更好的性能,为什么不使用标准SSJS对象?
  2. 为什么使用put方法代替SSJS"效率低得多".用于设置HashMap值的表示法?

xpages xpages-ssjs

4
推荐指数
1
解决办法
466
查看次数

使用SSJS创建xml文件

我想在服务器上使用SSJS创建一个xml文件.有办法吗?任何人都可以提供一个示例代码来在服务器上创建一个xml文件.

xpages xpages-ssjs

3
推荐指数
2
解决办法
749
查看次数

XPages - 从配置文件中获取值

我正在尝试从XPage的beforePageLoad事件中的配置文件中获取值.为此,我使用Server Side Javascript:

var currdb:NotesDatabase = database;
var profdoc:NotesDocument = currdb.getProfileDocument("frmProfile","");
var showRefInfo = profdoc.getItemValueString("ShowReferenceInformation");
sessionScope.put("showRefInfo",@Text(showRefInfo));
Run Code Online (Sandbox Code Playgroud)

字段"ShowReferenceInformation"可以具有值1或0.我已将此值从0更改为1,但是我的SSJS代码继续返回0.可能导致此问题的原因是什么?

lotus-notes xpages xpages-ssjs

3
推荐指数
1
解决办法
1803
查看次数

如何禁用XPage的客户端验证?

我知道我可以通过以下方式禁用xsp.properties中的服务器或应用程序:

xsp.client.validation=false
Run Code Online (Sandbox Code Playgroud)

并在控制层通过:

disableClientSideValidation="true"
Run Code Online (Sandbox Code Playgroud)

没有为每个控件设置disableClientSideValidation,有没有办法在XPage级别禁用?

validation xpages xpages-ssjs

3
推荐指数
1
解决办法
883
查看次数

在Designer中,SSJS库随着它们的增长而变慢

对于大多数Xpages应用程序,我观察到,在设计器中,ssjs库随着增长而变得越来越慢.一个例子是目前有1200多行代码(包括注释)的库,包含40多个函数.每次我在设计器中访问库时(例如,从不同的选项卡切换到托管库代码的那个),都会有很多闪烁,重建和重新读取,这可能需要几秒钟.

这不是我不能等待,但它让我感到有些不安,我想知道是否存在某种限制(关于代码行,或函数数量,或两者兼而有之)我应该观察到的.将代码拆分成各种库会更好吗?

并且,是的:我正在考虑将至少一些功能重建为javaBeans,但基本问题仍然存在.

最后,不,我没有观察到运行时性能的任何下降.这只是一个设计时问题.

xpages xpages-ssjs

3
推荐指数
1
解决办法
100
查看次数

Xpages:managedBean不断"丢失"全局Domino Session对象

我正在为Xpages应用程序构建managedBean.目前,bean在视图范围的faces-config中注册,因为我需要它在每个页面加载时重新初始化(见下文).bean的构造函数初始化了几个类变量,这些变量的值在整个类的代码中被引用.其中一个变量是Domino session对象,另一个例子是当前的document datasource:

private Session session;
private DominoDocument ds;
Run Code Online (Sandbox Code Playgroud)

两者都在构造函数中初始化为

session=DominoUtils.getCurrentSession();
ds=(DominoDocument) resolveVariable(dsName);
Run Code Online (Sandbox Code Playgroud)

(resolveVariable是一个内部帮助方法;不要认为我需要在这里解释一下)

除了构造函数和各种帮助器方法之外,在同一个类中还有一些其他公共方法在按钮单击时调用.大多数这些附加方法都使用相同的文档数据源以及当前的会话对象.

发生的事情是我的其他方法可以访问和使用全局数据源对象(ds)但是如果它们试图访问全局会话对象则会引发错误; 进一步向下堆栈跟踪我发现似乎导致错误:

NotesException: Object has been removed or recycled
Run Code Online (Sandbox Code Playgroud)

我的代码现在根本没有回收,会话对象必须在途中丢失.

作为一种解决方法,我开始将会话对象从SSJS传递到每个方法中

public void testMethod(Session s){System.out.println("my name is"+ s.getEffectiveUserName()); }

哪个工作正常.但是为什么bean对象会记住所有其他对象和变量而忘记全局会话?

BTW:我试图将我的managedBean绑定到会话范围,但这根本没有帮助.是的,我甚至在做出改变之后重启了整个服务器......

java session managed-bean xpages xpages-ssjs

3
推荐指数
1
解决办法
275
查看次数

在SSJS中使用表达式语言

当我在EL中引用bean属性(id)时,我会使用#{bean.id}.

我现在要求使用一些静态文本预先添加该数据.我通过使用SSJS来做到这一点:"sometext" + bean.getId();

有没有办法在SSJS中使用EL符号?例如"sometext" + #{bean.id};

我意识到在这个例子中它没有太大的不同,但是当请求更复杂或嵌套的属性时,我认为它会有用.

xpages xpages-ssjs

3
推荐指数
1
解决办法
448
查看次数