重用在XPages Lotus中打印到浏览器的web代理

重用在XPages Lotus中打印到浏览器的web代理,xpages,document,lotus,agents,Xpages,Document,Lotus,Agents,当将经典Domino应用程序升级到XPages时,一个特定的问题不断出现:“如何处理直接写回浏览器的现有代理中的PRINT语句?”我的nsf文件中有200个代理,它们的代码中都使用PRINT语句。 我已经调查并找到了联系 但我不可能更改代理代码,因为它也用于表单。 我必须在点击按钮时从xpages重新使用这些代理,还必须传递文档。 有什么方法或选择可以解决我的问题吗。 需要帮助 我们有Agent.runWithDocumentContext(doc:NotesDocument)方法,它可以从xp

当将经典Domino应用程序升级到XPages时,一个特定的问题不断出现:“如何处理直接写回浏览器的现有代理中的PRINT语句?”我的nsf文件中有200个代理,它们的代码中都使用PRINT语句。 我已经调查并找到了联系 但我不可能更改代理代码,因为它也用于表单。 我必须在点击按钮时从xpages重新使用这些代理,还必须传递文档。 有什么方法或选择可以解决我的问题吗。 需要帮助


我们有Agent.runWithDocumentContext(doc:NotesDocument)方法,它可以从xpage运行代理并传递内存中的文档。我创建了一个im内存文档

   var doc = database.createDocument();
   doc.replaceItemValue("StartDate",startDate.getDateOnly())
   doc.replaceItemValue("EndDate",endDate.getDateOnly())
   doc.replaceItemValue("ReportName",reportName)
    var agent:NotesAgent = database.getAgent("("+reportName+")");

    agent.runWithDocumentContext(doc);   
这个内存中的文档我可以传递给代理。但我目前面临的问题是,我的代理被用来直接打印,我认为这不可能通过xpage实现。
是否有其他方法可以将内存中的文档传递给代理,并可以通过xpages直接打印到浏览器。
需要帮助请提供帮助。

创建一个java类,该类调用您的代理,并在输入流中读取代理的输出,并在Xpages的计算字段中显示流

下面是一个示例java类,它将从代理检索输出

package com.thomas;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

    public class getAgentData{

        public String getData() throws IOException {
            try {
                URL url = new URL("http://localhost/mydatabase.nsf/myagent?openagent");

                BufferedReader in = new BufferedReader(
                new InputStreamReader(url.openStream()));
                String content = new String();
                String inputLine;
                while ((inputLine = in.readLine()) != null) {
                    content+=inputLine;
                }
                in.close();
                return content;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
如果将java类作为bean添加到faces-config.xml中,则可以使用xpages中的计算字段调用它,如下所示

<xp:text escape="true" id="computedField1" value="#{javascript:getAgentData().getData()}"></xp:text>

创建一个java类,该类调用您的代理,并在输入流中读取代理的输出,然后在Xpages的computed字段中显示流

下面是一个示例java类,它将从代理检索输出

package com.thomas;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

    public class getAgentData{

        public String getData() throws IOException {
            try {
                URL url = new URL("http://localhost/mydatabase.nsf/myagent?openagent");

                BufferedReader in = new BufferedReader(
                new InputStreamReader(url.openStream()));
                String content = new String();
                String inputLine;
                while ((inputLine = in.readLine()) != null) {
                    content+=inputLine;
                }
                in.close();
                return content;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
如果将java类作为bean添加到faces-config.xml中,则可以使用xpages中的计算字段调用它,如下所示

<xp:text escape="true" id="computedField1" value="#{javascript:getAgentData().getData()}"></xp:text>

创建一个java类,该类调用您的代理,并在输入流中读取代理的输出,然后在Xpages的computed字段中显示流

下面是一个示例java类,它将从代理检索输出

package com.thomas;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

    public class getAgentData{

        public String getData() throws IOException {
            try {
                URL url = new URL("http://localhost/mydatabase.nsf/myagent?openagent");

                BufferedReader in = new BufferedReader(
                new InputStreamReader(url.openStream()));
                String content = new String();
                String inputLine;
                while ((inputLine = in.readLine()) != null) {
                    content+=inputLine;
                }
                in.close();
                return content;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
如果将java类作为bean添加到faces-config.xml中,则可以使用xpages中的计算字段调用它,如下所示

<xp:text escape="true" id="computedField1" value="#{javascript:getAgentData().getData()}"></xp:text>

创建一个java类,该类调用您的代理,并在输入流中读取代理的输出,然后在Xpages的computed字段中显示流

下面是一个示例java类,它将从代理检索输出

package com.thomas;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

    public class getAgentData{

        public String getData() throws IOException {
            try {
                URL url = new URL("http://localhost/mydatabase.nsf/myagent?openagent");

                BufferedReader in = new BufferedReader(
                new InputStreamReader(url.openStream()));
                String content = new String();
                String inputLine;
                while ((inputLine = in.readLine()) != null) {
                    content+=inputLine;
                }
                in.close();
                return content;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
如果将java类作为bean添加到faces-config.xml中,则可以使用xpages中的计算字段调用它,如下所示

<xp:text escape="true" id="computedField1" value="#{javascript:getAgentData().getData()}"></xp:text>

如果要使用XPages。。然后使用XPages。。。这意味着将代理迁移到XPages的工作方式。XPages和Notes客户机之间可能存在很多协同展示,甚至我认为是经典的dominoweb。但是如果你打算保留200个代理,而这些代理并不是XPages最佳实践的一部分,那么我觉得你根本不应该使用XPages

编辑: 此链接:


讨论如何从XPages调用代理并能够使用内存中的文档。也许这会有帮助,但如果它被大量使用,性能将不会很好,因为代理为每个调用加载和卸载。这仍然是一个坏主意。

如果你想使用XPages。。然后使用XPages。。。这意味着将代理迁移到XPages的工作方式。XPages和Notes客户机之间可能存在很多协同展示,甚至我认为是经典的dominoweb。但是如果你打算保留200个代理,而这些代理并不是XPages最佳实践的一部分,那么我觉得你根本不应该使用XPages

编辑: 此链接:


讨论如何从XPages调用代理并能够使用内存中的文档。也许这会有帮助,但如果它被大量使用,性能将不会很好,因为代理为每个调用加载和卸载。这仍然是一个坏主意。

如果你想使用XPages。。然后使用XPages。。。这意味着将代理迁移到XPages的工作方式。XPages和Notes客户机之间可能存在很多协同展示,甚至我认为是经典的dominoweb。但是如果你打算保留200个代理,而这些代理并不是XPages最佳实践的一部分,那么我觉得你根本不应该使用XPages

编辑: 此链接:


讨论如何从XPages调用代理并能够使用内存中的文档。也许这会有帮助,但如果它被大量使用,性能将不会很好,因为代理为每个调用加载和卸载。这仍然是一个坏主意。

如果你想使用XPages。。然后使用XPages。。。这意味着将代理迁移到XPages的工作方式。XPages和Notes客户机之间可能存在很多协同展示,甚至我认为是经典的dominoweb。但是如果你打算保留200个代理,而这些代理并不是XPages最佳实践的一部分,那么我觉得你根本不应该使用XPages

编辑: 此链接:


讨论如何从XPages调用代理并能够使用内存中的文档。也许这会有帮助,但如果它被大量使用,性能将不会很好,因为代理为每个调用加载和卸载。这仍然是个坏主意。

您需要稍微更换一下代理。您可以使用
someobj.Print“Something”
,而不是
Print“Something”
——这应该是使用搜索/替换的可管理任务。详细步骤已记录在案

现在您声明需要双重使用代理。一旦你超越了复制和粘贴编程,就没那么难了

检查类时,它会查找documentcontext。直接调用代理时,文档上下文不存在。因此,您需要检查您是否拥有文档——如果没有,它是经典的,您需要向类中添加一个print语句,如果它在那里,您需要保存到上下文中

代码为
myObject.printResult=true
以进行打印-或者您根据定义将其设置为true