会话范围的托管 bean 似乎不在 xpages 应用程序中的会话范围

2024-01-31

我编写了一个会话范围的托管 bean 来缓存 domino xpages 应用程序中的会话用户特定信息,就像以下代码一样:

    public class NBUserInfo {
    private String fullUserName;
    private String commonUserName;
    private String displayName;
    private String mailAddress;
    private String themeType;
    private String themeData;

    private Session _session;
    private Database _dbnames;
    private Name _dominoName;

    public NBUserInfo(){
        System.out.println("初始化Managed Bean:NBUserInfo...");
        _session = ExtLibUtil.getCurrentSession();

        try {
            System.out.println(_session.getEffectiveUserName());
            _dbnames = _session.getDatabase(_session.getCurrentDatabase().getServer(), "names.nsf",false);
            _dominoName = _session.createName(_session.getEffectiveUserName());
        } catch (NotesException e) {
            // TODO 自动生成 catch 块
            e.printStackTrace();
        }

    }

    public String getFullUserName() {
        if(fullUserName==null)
            try {
                fullUserName = _dominoName.getCanonical();
            } catch (NotesException e) {
                // TODO 自动生成 catch 块
                e.printStackTrace();
            }
        return fullUserName;
    }

然后,我在 faces-config 中声明它,使其成为会话范围的 bean:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
  <!--注册受管Beans-->
  <managed-bean>
    <managed-bean-name>NBUser</managed-bean-name>
    <managed-bean-class>com.nbhdtech.common.NBUserInfo</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
  <!--注册自定义XPAGES根渲染器-->
  <render-kit>
    <renderer>
      <component-family>javax.faces.ViewRoot</component-family>
      <renderer-type>com.ibm.xsp.ViewRootEx</renderer-type>
      <renderer-class>com.nbhdtech.xsp.CustomViewRootRenderer</renderer-class>
    </renderer>
  </render-kit>
  <!--AUTOGEN-START-BUILDER:由 IBM Domino Designer 自动生成。请勿修改。-->
  <!--AUTOGEN-END-BUILDER:自动生成的区段的末尾-->
</faces-config>

在测试bean时,我通过#{NBUser.fullUserName}使用它, 它并不总是返回当前domino http会话上下文的用户,例如,我首先由用户“user1”登录并注销,然后由user2登录,该bean似乎没有为新的user2会话重新创建,只是仍然是 user1 的会话信息。

有一些解决办法吗?我的 domino 已配置为 LTPAToken SSO 配置。如果有任何答案,非常感谢


正如 Mark Leusink 提到的,XPages 中的 sessionScope 链接到浏览器会话,而不是(登录的)用户会话。

因此,您需要一种方法来检查当前用户是否与绑定到您的用户 bean 的用户匹配。实现此目的的一种方法是在每个请求上调用用户 bean 中的“验证”方法。 “验证”方法可能如下所示:

public void verify() {
    // retrieve the username of the current user
    String currentUser = ExtLibUtil.getCurrentSession().getEffectiveUserName();

    // (re-)init the user bean if another user logged in
    if (!currentUser.equals(getFullUserName())) {
        // Call your constructor logic here
    }
}

您可以在中调用此“验证”方法beforePageLoad中央自定义控件之一的事件(例如布局的自定义控件):

<xp:this.beforePageLoad><![CDATA[#{javascript:
    // (re-)init the userbean if another user logged in
    NBUser.verify();
}]]></xp:this.beforePageLoad>

--

另外,您不应该将 Domino 特定对象存储在 bean 中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

会话范围的托管 bean 似乎不在 xpages 应用程序中的会话范围 的相关文章

  • 如何从 extlib 对话框中删除关闭图标?

    我正在使用 extlib 对话框组件来显示一些数据 我希望用户仅通过其中的按钮关闭对话框 我在标题栏中看不到任何禁用关闭图标的选项 有人可以指出我执行此操作的文档吗 到目前为止 我已经检查了 wiki extlib 书 也许我错过了 CSS
  • 主题不适用于按钮

    我开始玩主题 我能够创建 CSS 并将 CSS 关联到各种表格元素 工作正常 现在我尝试用按钮做同样的事情 但这似乎不起作用 如果我将样式类应用于按钮 那么它就可以工作
  • POI for XPage - 将 Word 文档保存为富文本字段中的附件

    我正在使用 OpenNTF POI 4 XPage 插件 这对于生成 Word 文档非常有效 现在 生成 Word 文档后 我想创建一个新的响应文档 并将该 Word 文档作为附件存储在该响应文档的富文本字段中 这是我的代码 在 POI 4
  • 确定已定义用户的所有组

    我目前正在创建一个java方法 XPage托管bean的一部分 来检索用户 不一定是当前用户 所属的列表组 是否有任何简单的方法来检索此信息 或者我是否必须遍历所有组来检查用户 并检查这些组是否是其他组的子组 在博客文章中回答了这个问题 h
  • Domino 8.5.3 64 位中 HTTPJVMMaxHeapSize 的最佳设置

    我试图找到关于 Domino 8 5 3 FP4 64 位 Windows 中 JVM 堆大小的最佳设置的明确答案 我知道默认情况下它设置为1024M 一些网站建议建议使用 1G 1024M 但这是默认设置 所以就那么好了吗 其他网站称可用
  • Xpages:让 FullCalendar 与引导主题一起使用

    Per 的回答是解决方案的重要组成部分 为了完整起见 这是我最终要做的 首先 我必须解决 Per 提到的 AMD 问题 然后我必须修改我的 Xpage 以确保以正确的顺序加载正确的库 其中一些是通过反复试验完成的 我必须将资源聚合设置设置为
  • 特定托管 Bean 实例在时间间隔后过期

    我有 2 个 JSF 托管 beanA and B我需要过期 销毁 销毁A2分钟后B5分钟后 我检查了这个相关问题bean 超时 https stackoverflow com questions 14581536 timing out f
  • 如何在 XPage 中隐藏带有
  • 标记的菜单项
  • 我有一个基于这个惯例的传统菜单 ul li li ul
  • 如何从phonegap获取图片到远程XPage?

    我在 iPad 上构建了版本 1 6 的 Phonegap 应用程序 将 ulr 设置为 Domino 服务器上的 XPage 现在我的问题 当我在 iPhone 上拍照并将其上传到我的 XPage 时 使用该功能takePicture 返
  • 我如何添加样式类到 xpages 中的表单标签

    我需要添加StyleClass到生成的表单标签xPages 我不知道是否可以在新主题中更改此控件 但我只需要一个xPage在我的应用程序中 这是生成的代码
  • 从 XPages 全局删除 Dojo

    At http www dominoguru com pages 11182010085538 html http www dominoguru com pages 11182010085538 html and http dpastov
  • 将自定义控件中的编辑框动态绑定到托管 bean

    我读过许多关于在自定义控件中动态绑定字段的优秀帖子和文章 但它们都假设了文档数据源 我想允许托管 bean 数据源的可能性 我尝试将属性类型设置为com ibm xsp model DataSource or com ibm xsp ext
  • 在 xPages 中使用数据上下文有什么好处?

    我从未在 xPages 中使用过数据上下文 想了解其好处 如果我想返回内存中的某些内容 我经常调用 SSJS 脚本库中的函数 我相信该脚本库也存储在内存中 假设我在 ssjs 中有一个返回 Notesdocument 的函数 这个函数可能会
  • 访问控件值的最有效方法是什么?

    在我必须访问控件的值的两个选择中 哪个是最有效的 getComponent ControlName getValue or dataSource getItemValue FieldName 我发现有时getComponent似乎没有返回当
  • Field.get(obj) 在注入的 CDI 托管 bean 上返回所有 null,而手动调用 getter 返回正确的值

    我试图通过反射从 JSF 页面的支持 bean 访问某些字段的值 问题是 当我使用 getter 时 我得到了正确的值 但是当我使用必要字段的 get obj 方法时 我总是得到一个空值返回 获取bean对象 ELContext elcon
  • 我如何知道 viewScope 变量是否已初始化

    在应用程序中 我需要知道 viewScope 变量是否已初始化 创建 viewScope 变量时 该值可能为 null 所以 viewScope isEmpty SomeName 并没有告诉我它已经被初始化并且答案为 null 或者它还没有
  • 获取错误消息

    我们使用以下代码在验证文档时添加新的错误消息 function addFacesMessage message component try if typeof component string component getComponent
  • XPage:处理浏览器后退按钮

    我为 Notes 表单创建了一个 XPage 我添加了一个编辑按钮 用于执行一些逻辑 然后将文档模式切换为 编辑 以及一个保存并关闭按钮 用于保存文档并重定向到 Notes 视图的 XPage 这工作正常 但是当返回视图后按下浏览器后退按钮
  • 如何将焦点设置到重复控件内的编辑框?

    我想将焦点设置为 将光标置于重复控件中的编辑框 最后一个 重复位于面板 panelRep 内 然后我在面板外面有一个按钮 这是几乎可以工作的按钮的客户端代码 焦点已设置 字段周围的蓝色边框 但光标未放置在字段中 用户仍必须单击该字段才能写入
  • 页面加载时显示扩展库对话框?

    有没有办法在我的页面加载时显示扩展页面对话框 Add a

随机推荐

  • 如何删除所有神秘的“index on”和“WIP on”提交?

    我刚刚被要求修复我的应用程序中的一个错误 我收藏了我当前的工作并查看了我的最新版本标签 我立即注意到这是一个错误 因为 Git 消息告诉我我的提交不会被保存 所以我检查了master反而 但在我这样做之前 我已经打开了我的藏品 重新藏起来的
  • 在一个事务 SQL 中删除和插入

    我只是想问封装到事务时是否总是第一个查询被执行 例如我有50万条记录要删除 50万条记录要插入 是否有可能锁定 实际上我已经测试了这个查询并且它工作正常 但我想确定我的假设是否正确 注意 这将删除并插入相同的记录 并可能更新其他列 BEGI
  • 下拉选择控件 - Windows 8 Metro - XAML

    我想要如下图所示的下拉菜单 我不知道如何得到它们 我想这些是某种组合框 但我不确定 任何人都可以帮助我并提供 xaml 代码吗 谢谢 我想你正在寻找组合框 Windows 8 商店控件列表 MSDN http msdn microsoft
  • ng-click 在 MVC 部分视图中不起作用

    我有一个使用 angular js 和 MVC 的单页面应用程序 该页面调用两个部分视图 Menu Accounts 菜单加载良好 当用户单击菜单项时 我使用角度 ng click 调用另一个部分视图 并将部分视图结果注入主页中 问题是我的
  • LAMP 显示 php 错误

    我已经安装了开发人员的 LAMP 服务器并在 php ini 上进行了更改 显示错误打开 显示启动错误打开 但它没有显示任何错误 甚至没有一点警告 问题出在哪里 出了什么问题 请记住 大多数系统都有两个 php ini 文件 一个用于网络服
  • 在 matplotlib 中绘制黑白二值图

    我使用 python 来模拟一些自动化模型 并在 matplotlib 的帮助下生成如下所示的图 我目前正在使用以下命令进行绘图 ax imshow self g cmap map interpolation nearest where s
  • 使用maven scm插件提交多个文件

    我想使用 maven scm 插件 v1 9 4 在不同的文件夹中 git 提交两个文件 例如 abc p json and xyz p json 我不想提交任何其他文件 例如other p json 根据文档 http maven apa
  • Ninject:将多种类型绑定到同一个单例实例

    interface IService
  • 将 JSON 数组发布到 Android 中的 Web 服务

    我在执行一项相当简单的任务时遇到了一些问题 我只需要一个 JSON 数组 其中包含一个 JSON 对象即可发布到我的 Web 服务 整个 URL 请求的格式需要如下所示 http www myserver com myservice php
  • Instagram 用户对象中每个个人简介的空字符串

    我已经尝试过 通过 Python 中的 API 库以及 Instagram 和 apigee com 提供的 API 控制台 我使用请求 GET tags tag name media recent 我试过ferrari tag 所有结果都
  • 奇怪的 lxml 行为

    我手动创建 xml 然后尝试使用 xsd 方案验证它 验证一开始没有通过 但如果我将 xml 转换为字符串并返回 那么新的 xml 将通过验证 from lxml import etree xsd etree fromstring
  • 如何合并TypeScript中没有导出接口的命名空间

    我在 TypeScript 中使用队列 lib Bull 它的定义是 node modules types bull index d ts declare const Bull queueName string opts Bull Queu
  • 如何更改 Sublime Text 3 for MacOS 中的首选编码

    我想在 Yosemite 上的 Sublime Text 3 中将首选编码从 US ASCII 更改为 UTF 8 bash 中的首选编码设置为 UTF 8 因此当 python 在终端中运行时 import locale print lo
  • 隐藏运算符以避免 AST 中出现歧义

    我正在尝试伊莎贝尔官方教程中的列表示例 我更换了 with 和 with 具有与 Haskell 相同的语法 现在我收到有关 AST 中含糊之处的警告 我知道我可以隐藏功能hide const但这对于中缀表示法的运算符不起作用 如何在伊莎贝
  • Python 的 tfidf 数据框

    我必须对一些情绪进行分类我的数据框是这样的 Phrase Sentiment is it good movie positive wooow is it very goode positive bad movie negative 我做了一
  • Python数据框导出到csv,带引号(“)

    如何使用双引号将 python 数据帧导出到 csv 我尝试使用下面的代码 但它没有出现在输出文件中 我需要像 column1 column2 column3 这样的结果 请帮忙 exportPath exportPath data2Upl
  • 如何使用循环显示我的所有类别名称(WordPress)

    我这里有下面的代码 它显示我还想要类别名称和描述 现在我需要显示他们在其类别中的帖子 我怎么做呢
  • 如何在 Windows 注册表中检测用户是否安装了 .Net Framework?

    如何在 Windows 注册表中检测用户是否安装了 Net Framework 我不是在寻找基于 Net 的解决方案 因为查询来自 InnoSetup 我通过阅读 Stack Overflow 上的另一篇文章知道 Net Framework
  • 如何使用 ConfigParser 处理配置文件中的空值?

    如何使用 python configparser 模块解析 ini 文件中没有值的标签 例如 我有以下ini 我需要解析rb 在某些 ini 文件中 rb 具有整数值 而某些文件则根本没有值 如下例所示 如何使用 configparser
  • 会话范围的托管 bean 似乎不在 xpages 应用程序中的会话范围

    我编写了一个会话范围的托管 bean 来缓存 domino xpages 应用程序中的会话用户特定信息 就像以下代码一样 public class NBUserInfo private String fullUserName private