2013-02-12 53 views
1

我使用的是XPage as an agent (XAgent)这使得一个SSJS呼叫到存储为Java的设计元素一些Java类。我希望由XPage策动的进程处于用户当前正在以浏览器身份登录的环境中。然而,一切似乎都在运行,我猜是基于XPage上的最后一个签名?的XPages getEffectiveUserName()

例如,在我的自定义类以下的回报我的名字时,我需要它返回用户名:

DominoUtils.getCurrentSession().getEffectiveUserName() 

当使用老同学Domino代理,有效的用户名是由“运行确定作为Web用户“或”代表在代理属性中运行“字段。

是否有可能使用一个XPage时实现相同的功能?

+0

你能你的代码段添加到您的问题,因为'DominoUtils.getCurrentSession()。getEffectiveUserName()'(在Java中)和'session.getEffectiveUserName()'(在SSJS)总是为我工作? – Naveen 2013-02-12 16:21:59

+0

没问题,你想看哪个片段?我已经粘贴到描述中的部分是返回我的名字而不是Web用户的名字。该代码位于正在beforeRenderResponse事件中调用的类的构造函数中。 – 2013-02-13 08:04:46

+0

“beforeRenderResponse”代码片段介绍了它如何调用自定义Java类。我会建议看看下面的stwissel提供的选项。 – Naveen 2013-02-13 11:56:22

回答

2

探讨您有多个运动部件:

  1. 添加到XAgent(不是你的Java代码)与session.getUserName print语句()和session.getEffectiveUsername()
  2. 检查DominoUtils如果有隐藏在它
  3. 如果1级的作品,而不是3,考虑依赖注入sessionAsSigner:不是在正从DominoUtils一方面它的会话参数从XAgent Java类

让我们知道如何去

+0

谢谢,我目前不在PC附近,但我会尽快通过您的建议并让您知道。根据您的意见,听起来像您认为DominoUtils导致我的问题。因此,如果我将会话从SSJS传递到java,大概我会期望该会话自动处于Web用户的上下文中?不仅适用于EffectiveUsername,还适用于ACL安全性,读者/作者姓名等? – 2013-02-13 07:56:49

+0

所以在XPage SSJS中,会话。getUserName()==服务器的全名| session.getEffectiveUsername()==用户的全名。我在DominoUtils中找不到一个sessionAsSigner属性。我打算按照您的建议进行操作,并通过XPage进行会话。然后我发现你可以在调用getCurrentSession时将FacesContext作为参数传递。试过了,嘿,它开始工作。我猜想,我想你应该将会话放在当前XPage(也就是Java Server Faces)上下文中。感谢指针。 – 2013-02-14 14:40:46

0

在我的情况,我可以解决大部分的需求与之一:

session.getEffectiveUserName() 

或:

context.getUser().getFullName() 

在有些情况下,你需要与封装的情况:

session.createName(string):NotesName 

获取NotesName-Object表示。

+1

我在说的是由Java中的EffectiveUserName返回的用户名不会返回当前Web用户的名称,它返回我的名字 - 大概是因为我是保存XPage的最后一个人。 – 2013-02-12 15:51:45