代码之家  ›  专栏  ›  技术社区  ›  Malin

将文档设置为Java类中的全局属性,不工作

  •  2
  • Malin  · 技术社区  · 6 年前

    在我的XPAGE应用程序中,我有一个Java类,我想将文档设置为全局属性,并在我的方法中重复使用。该文档表示Notes配置文档,我只希望执行一次查找。不幸的是,它没有按预期工作。也许有人能引导我去正确的过程?

    首先,我建立了一个管理bean:

    <managed-bean>
        <managed-bean-name>emplDataMining</managed-bean-name>
        <managed-bean-class>se.bank.employeeApp.utils.EmployeeDataMining</managed-bean-class>
        <managed-bean-scope>view</managed-bean-scope>
    </managed-bean>
    

    我的类包含几个方法,这些方法将转到不同的系统。系统的所有URL都存储在Notes配置文档中,我只想加载一次,然后在这些方法中重复使用。

    public class EmployeeDataMining implements Serializable{
    
        private static final long serialVersionUID = 1L;
        private Document configuration;
    
        //constructor class. not so very special, so I wont post it
    
        public void getConfiguration(){
            //setting up database and view
            //only 1 document stored in the view so I can hard-code the reference
            configuration = vw.getDocumentByKey("ConfigDocument", true);
            //... rest of code e.g. setting up httpclient, JSONobj
        }
    
        public void collectDataFromSystemX(CloseableHttpClient httpclient, Employee employee, JSONObject JSONobj){
            //I wont post all of my code  
            HttpPost httpPost = new HttpPost(this.configuration.getItemValueString("urlSystemX"));
            //this.configuration is null :-?
            //..rest of code
        }
    
        public void collectDataFromSystemY(CloseableHttpClient httpclient, Employee employee, JSONObject JSONobj){
            //I wont post all of my code  
            HttpPost httpPost = new HttpPost(this.configuration.getItemValueString("urlSystemY"));
            //this.configuration is null :-?
            //..rest of code
        }
    
    }
    

    我的代码是从ssjs启动的:

    emplDataMining.getConfiguration(); 
    emplDataMining.collectDataFromSystemX(//passing in the variables which are setup in getConfiguration method)
    

    所以我主要关心的是配置文件文档没有在方法之间正确地设置或交换。

    有人能告诉我我忽略了什么吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   stwissel    6 年前

    有两个问题:

    • 在视图范围内,bean将为您打开的每个文档重新加载。如果是配置文档,则要使用会话范围
    • 您可以将Notes对象存储在托管bean中(请求范围可能有效)。您要做的是:在bean的构造函数中,加载文档并将字段值提取到bean内部变量(字符串、列表等)中。那会给你想要的