我的数据库中有一些属性,这些属性很少会更改,但在整个过程中都会得到广泛的使用。看起来这可能是我可以用托管bean做的事情吗?
<managed-bean>
<managed-bean-name>bu</managed-bean-name>
<managed-bean-class> </managed-bean-class>
<managed-bean-scope>application</managed-bean-scope> </managed-bean>我想在applicationScope.bu中得到一个值列表。
我只是编写一个简单的java实现吗?有没有更简单或更好的方法?
发布于 2015-09-30 20:22:07
如果我正确理解了您的问题,我认为托管bean的属性不会是您想要存储应用程序属性的地方。
我只想把它们放在你申请的登陆页的应用范围内。
发布于 2015-09-30 20:31:57
为了正确地实现托管bean,faces-config应该包括一个像您已经放入的块,但是您忽略了这个值。这是将在内存中创建的类(在您的例子中是applicationScope)。如果您的bean类有返回您要查找的值的方法,那么您就可以了。我喜欢bean(托管或POJO),并在一些应用程序中使用这种方法。
正如Steve在他的回答中指出的那样,编辑您对配置的可访问性和数量的需求可能会驱动您如何存储这些值。您与它们的接口方式可能有所不同,我倾向于使用托管bean。
对于需要为给定应用程序存储的少量值,我喜欢在XSP中设置这些值,然后可以通过XSPContext.getProperty('xsp.property.name');引用这些值。
对于更复杂的事情,我倾向于创建一个配置文档,它类似于配置文件,然后我将它从/存储加载到值中。/Edit
如果您正在寻找一个从托管bean开始的好地方,或者快速引用来检查是否正常,我建议使用查看Henrik Lausten关于这一主题的博客文章。
简短的版本是,要拥有托管bean,您必须拥有:
#{beanName.propertyName} (EL使用带camel大小写的属性名称,进行转换,因此getPropertyName()的getter方法在EL中不存在,如第一次所示#{javascript:return beanName.getPropertyName()}的SSJS (完全方法调用)
然后,您可以在表达式语言或SSJS块中使用托管bean的名称(在您的示例中为"bu")。在EL绑定中,请注意属性使用要访问的camel大小写;因此myProperty的属性由getMyProperty公开,但看起来类似于#{bu.myProperty}。您还可以通过完整的方法名(如#{javascript:return bu.getMyProperty();} )在SSJS中使用它。
这里有一个例子,在我的演示程序中是用于数据对象的。它在viewScope中,因此它使用给定XPage的生命周期。
<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
<managed-bean>
<managed-bean-name>gotHouse</managed-bean-name>
<managed-bean-scope>view</managed-bean-scope>
<managed-bean-class>com.westeros.model.HouseModel</managed-bean-class>
</managed-bean>
<!--AUTOGEN-START-BUILDER: Automatically generated by IBM Domino Designer. Do not modify.-->
<!--AUTOGEN-END-BUILDER: End of automatically generated section-->
</faces-config>HouseModel.java *为了简洁起见,我在这里做了修改,作为一个例子。
package com.westeros.model;
//...
public class HouseModel implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
//...
public HouseModel(){}
public void load(String unid){
// do some load things from the doc's UNID
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
//...
}house.xsp (House XPage) *为示例的简洁性摘录
<?xml version="1.0" encoding="UTF-8"?>
<xp:view
xmlns:xp="http://www.ibm.com/xsp/core">
<!-- truncating -->
<div
class="form-group">
<xp:label
for="name"
value="Name" />
<xp:inputText
id="name"
value="#{gotHouse.name}" />
</div>
<!-- truncating -->
</xp:view>发布于 2015-10-01 07:07:37
可以使用托管bean的托管属性。比如这个小豆..。
package ch.hasselba.xpages;
import java.io.Serializable;
@SuppressWarnings("serial")
public class MyBean implements Serializable {
private String dbName;
public void setDbName(String dbName) {
this.dbName = dbName;
}
public String getDbName() {
return dbName;
}
}..。可以在faces-config.xml中初始化
<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
<managed-bean>
<managed-bean-name>myBean</managed-bean-name>
<managed-bean-class>ch.hasselba.xpages.MyBean</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
<managed-property>
<property-name>dbName</property-name>
<value>MyName</value>
<property-class>java.lang.String</property-class>
</managed-property>
</managed-bean>
</faces-config>一旦您访问bean,值就会“存在”。F.e.你XPage上的标签..。
<xp:label
value="#{myBean.dbName}"
id="label1">
</xp:label>..。然后显示MyName。
托管属性可以包含其他bean和访问运行时属性(f.e。请求参数),这使得它们非常强大。
https://stackoverflow.com/questions/32874699
复制相似问题