在生产中希望用户能够编写属性文件并将该文件上传到我们的生产服务器。一旦它到位,它将包含richfaces皮肤所需的属性。这个文件可以随便命名。
WEB-INF/myprop.properties
在开发中,我希望从我所有其他属性文件所在的内部读取属性文件。这个文件可以随便命名。
到目前为止,我已经这样做了:
@ManagedBean(name="myCustomSkin ")
@ApplicationScoped
public class MyCustomSkin extends SkinFactoryImpl {
/*
* In here I call
* Skin s = this.buildSkin(context, "skin"); in my constructor
* I am also overriding the loadProperties() method so it load my properties just fine
* For some reason I can't get my app to actually use the properties I have loaded
*/
}
有任何想法吗?基本上,我想通过一个 ApplicationScoped ManagedBean 动态地皮肤我的richfaces 应用程序,该应用程序在我的 Tomcat 7 服务器启动时被初始化。理想情况下,皮肤文件的名称将是动态用户输入,可能从数据库或不同的属性文件中读取。
编辑 1:我已经让它加载属性文件,然后我手动(通过 java 代码)尝试通过使用servletContext.setInitParameter("org.richfaces.skin", this.skin);
where this.skin
is a String 变量插入上下文参数,我得到这样的值:this.skin = s.getName();
如果你看到上面s
是只是我从中得到的 Skin 对象this.buildSkin
。这是SkinNotFound Exception
因为我假设我的皮肤没有在我的课程路径或其他东西中占据一席之地。
编辑 2:使用 JSF 2.1.17、Richfaces 4.3.0 和 Tomcat7
编辑3:有没有办法告诉richfaces 在不同的目录中查找myskin.skin.properties
文件?
谢谢