如何在Java中设置viewScope变量

如何在Java中设置viewScope变量,java,xpages,Java,Xpages,在我的XPages应用程序中,我希望在java的后端执行计算时掌握XPages的风格 我希望通过设置viewScope变量来计算某些控件的渲染属性来控制行为 有人能指导我如何做到这一点吗?谷歌到目前为止还不是我的朋友…试试看 ExtLibUtil.getViewScope().put("variableKey", "variableValue"); 试一试 为什么不只是管理bean属性呢?在我的应用程序中,我几乎不再使用作用域变量了。为什么不只是管理bean属性呢?在我的应用程序中,我几乎不再

在我的XPages应用程序中,我希望在java的后端执行计算时掌握XPages的风格

我希望通过设置viewScope变量来计算某些控件的渲染属性来控制行为

有人能指导我如何做到这一点吗?谷歌到目前为止还不是我的朋友…

试试看

ExtLibUtil.getViewScope().put("variableKey", "variableValue");
试一试


为什么不只是管理bean属性呢?在我的应用程序中,我几乎不再使用作用域变量了。

为什么不只是管理bean属性呢?在我的应用程序中,我几乎不再使用范围变量了。

Malin

我建议您按照Howard的建议使用托管bean。在XPages中使用Java非常方便

1。创建一个bean

它只是一个普通的Javabean,具有一个没有参数的构造函数。例如:

public class ExporterBean implements Serializable {
    private static final long serialVersionUID = 1L;
    private int numberOfDocs = 1L;

    public ExporterBean() {
        System.out.println("Instantiating ExporterBean");
    }

    public int getNumberOfDocs() {
        return numberOfDocs;
    }

    public void setNumberOfDocs(int numberOfDocs) {
        this.numberOfDocs = numberOfDocs;
    }
}
请注意,您应该为所有bean实现Serializable。查看范围将强制您这样做,但其他的则不会(但它可能会在以后影响您,具体取决于您是将bean保存在内存中还是将其序列化到磁盘)

2。将其定义为托管bean

您可以在Domino Designer导航中应用程序配置下的文件faces-config.xml中执行此操作。您需要添加以下内容:

  <managed-bean>
    <managed-bean-name>Exporter</managed-bean-name>
    <managed-bean-class>dk.myapp.bean.ExporterBean</managed-bean-class>
    <managed-bean-scope>view</managed-bean-scope>
  </managed-bean>

出口商
dk.myapp.bean.ExporterBean
看法
范围可以是:请求查看会话,或应用程序。完成此操作后,您可以使用在faces-config.xml中指定的名称直接在XPage中引用bean

在我的例子中,可能是:

<xp:text escape="false" value="#{Exporter.numberOfDocs}"/>

希望这有帮助

/约翰

马林

我建议您按照Howard的建议使用托管bean。在XPages中使用Java非常方便

1。创建一个bean

它只是一个普通的Javabean,具有一个没有参数的构造函数。例如:

public class ExporterBean implements Serializable {
    private static final long serialVersionUID = 1L;
    private int numberOfDocs = 1L;

    public ExporterBean() {
        System.out.println("Instantiating ExporterBean");
    }

    public int getNumberOfDocs() {
        return numberOfDocs;
    }

    public void setNumberOfDocs(int numberOfDocs) {
        this.numberOfDocs = numberOfDocs;
    }
}
请注意,您应该为所有bean实现Serializable。查看范围将强制您这样做,但其他的则不会(但它可能会在以后影响您,具体取决于您是将bean保存在内存中还是将其序列化到磁盘)

2。将其定义为托管bean

您可以在Domino Designer导航中应用程序配置下的文件faces-config.xml中执行此操作。您需要添加以下内容:

  <managed-bean>
    <managed-bean-name>Exporter</managed-bean-name>
    <managed-bean-class>dk.myapp.bean.ExporterBean</managed-bean-class>
    <managed-bean-scope>view</managed-bean-scope>
  </managed-bean>

出口商
dk.myapp.bean.ExporterBean
看法
范围可以是:请求查看会话,或应用程序。完成此操作后,您可以使用在faces-config.xml中指定的名称直接在XPage中引用bean

在我的例子中,可能是:

<xp:text escape="false" value="#{Exporter.numberOfDocs}"/>

希望这有帮助


/John

@Malin,还有ExtLibUtil.getRequestScope()、ExtLibUtil.getSessionScope()和ExtLibUtil.getApplicationScope(),还有
ExtLibUtil.resolveVariable()
。自FP8以来,它包括Jesse的Gallagher的pull请求,允许您在需要将
FacesContext.getCurrentInstance()
作为第二个参数传递之前,只传递变量名(例如
ExtLibUtil.resolveVariable(“requestScope”)
)。当包含OpenNTF Domino API时,它会变得非常强大,作用域包括serverScope、userScope和identityScope(请参阅“XPages Variables”子页)@Malin,还有ExtLibUtil.getRequestScope()、ExtLibUtil.getSessionScope()和ExtLibUtil.getApplicationScope(),还有
ExtLibUtil.resolvable()
。自FP8以来,它包括Jesse的Gallagher的pull请求,允许您在需要将
FacesContext.getCurrentInstance()
作为第二个参数传递之前,只传递变量名(例如
ExtLibUtil.resolveVariable(“requestScope”)
)。当包含OpenNTF Domino API时,这将变得非常强大,其作用域包括serverScope、userScope和identityScope(请参阅“XPages Variables”子页)。我也是这样做的…;-)我也是这样做的…;-)