从不同的 Java class 访问 Java Bean
accessing a Java Bean from a different Java class
我有一个名为 appProps 的 Java Bean,定义为一个 ApplicationScope,它是一个 Hashmap,类型为 <string, object>
。我可以使用
格式通过 SSJS 访问它
var appDesc:String = appProps["some application name"].getAppDesc();
和这个 returns 存储在 Hashmap 对象的字段之一中的应用程序描述。
现在我需要在另一个 JAVA Class.
中调用相同的进程
faces-config中的定义是:
<managed-bean>
<managed-bean-name>appProps</managed-bean-name>
<managed-bean-class>ca.wfsystems.core.ApplicationMap</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
SSJS 和 EL 为 appProps
执行的隐式查找的最佳 Java 等价物是:
ApplicationMap appProps = (ApplicationMap)ExtLibUtil.resolveVariable(FacesContext.getCurrentInstance(), "appProps")
有两个简单的解决方案:
ExtLibUtil.resolveVariable()
允许你通过faces-config中声明的变量名来访问它,所以appProps
。 ExtLib 14 允许您只传递名称。
在使用ExtLibUtil.resolveVariable()
的bean中添加一个静态get()
方法。然后你可以调用 ApplicationMap.get()
从不同的 java class
访问 java bean 的另一种(智能)方法
这是你的豆子class:
package ca.wfsystems.core;
import javax.faces.context.FacesContext;
public class ApplicationMap {
// Constants
private static final String BEAN_NAME = "appProps"; //$NON-NLS-1$
// Operations
public static ApplicationMap getCurrentInstance() {
// This is a neat way to get a handle on the instance of this bean in the scope from other Java code...
FacesContext context = FacesContext.getCurrentInstance();
return (ApplicationMap) context.getApplication().getVariableResolver().resolveVariable(context, BEAN_NAME);
}
}
这是一个示例 class 使用您的 bean class:
package ca.wfsystems.core;
public class ApplicationMapClient {
// Operations
public void doSomeThing() {
ApplicationMap appMap = ApplicationMap.getCurrentInstance();
// Your code goes here....
}
}
有关更多信息,请查看 John Dalsgaard 的博客条目 a lesson on scoped managed beans in xpages。
我有一个名为 appProps 的 Java Bean,定义为一个 ApplicationScope,它是一个 Hashmap,类型为 <string, object>
。我可以使用
var appDesc:String = appProps["some application name"].getAppDesc();
和这个 returns 存储在 Hashmap 对象的字段之一中的应用程序描述。
现在我需要在另一个 JAVA Class.
中调用相同的进程faces-config中的定义是:
<managed-bean>
<managed-bean-name>appProps</managed-bean-name>
<managed-bean-class>ca.wfsystems.core.ApplicationMap</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
SSJS 和 EL 为 appProps
执行的隐式查找的最佳 Java 等价物是:
ApplicationMap appProps = (ApplicationMap)ExtLibUtil.resolveVariable(FacesContext.getCurrentInstance(), "appProps")
有两个简单的解决方案:
ExtLibUtil.resolveVariable()
允许你通过faces-config中声明的变量名来访问它,所以appProps
。 ExtLib 14 允许您只传递名称。在使用
ExtLibUtil.resolveVariable()
的bean中添加一个静态get()
方法。然后你可以调用ApplicationMap.get()
从不同的 java class
访问 java bean 的另一种(智能)方法这是你的豆子class:
package ca.wfsystems.core;
import javax.faces.context.FacesContext;
public class ApplicationMap {
// Constants
private static final String BEAN_NAME = "appProps"; //$NON-NLS-1$
// Operations
public static ApplicationMap getCurrentInstance() {
// This is a neat way to get a handle on the instance of this bean in the scope from other Java code...
FacesContext context = FacesContext.getCurrentInstance();
return (ApplicationMap) context.getApplication().getVariableResolver().resolveVariable(context, BEAN_NAME);
}
}
这是一个示例 class 使用您的 bean class:
package ca.wfsystems.core;
public class ApplicationMapClient {
// Operations
public void doSomeThing() {
ApplicationMap appMap = ApplicationMap.getCurrentInstance();
// Your code goes here....
}
}
有关更多信息,请查看 John Dalsgaard 的博客条目 a lesson on scoped managed beans in xpages。