Java XPAGES:两张脸是如何一张接一张地继承下来的,而第二张脸又是如何保持他的个性的?
我有两个基础:Java XPAGES:两张脸是如何一张接一张地继承下来的,而第二张脸又是如何保持他的个性的?,java,xpages,faces-config,Java,Xpages,Faces Config,我有两个基础: Model A.ntf Model B.ntf which inherited of A Base B1.nsf from B 我在a和B中有一个faces配置,但我想更改B的faces配置。 我不能这样做,因为当我更改它并更新设计时,faces配置变成了最初的样子 因此,我想使用Resources中的一个文件以这种方式包含一段faces配置 但是代码是什么呢 一个主意?或者另一个人想做什么 谢谢当您继承整个数据库时,您无法轻松更改设计元素。已公开的(在菜单中)具有“不允许设计
Model A.ntf
Model B.ntf which inherited of A
Base B1.nsf from B
我在a和B中有一个faces配置,但我想更改B的faces配置。
我不能这样做,因为当我更改它并更新设计时,faces配置变成了最初的样子
因此,我想使用Resources中的一个文件以这种方式包含一段faces配置
但是代码是什么呢
一个主意?或者另一个人想做什么
谢谢当您继承整个数据库时,您无法轻松更改设计元素。已公开的(在菜单中)具有“不允许设计更新”标志,但AFAIK该标志未公开用于faces配置。您可以做的是:不要将B作为一个整体从A继承,只需复制您需要的设计元素,并对继承说“是”
如果你有很多东西,你可以考虑将设计元素移动到扩展库,这样你的任何应用程序都可以从中受益。
您还可以使用复制工具来复制周围的元素。还有一个问题正在酝酿中。我一直在考虑这个问题,我确实知道如何破解它。当然,我会首先研究@stwissel所描述的选项。faces-config.xml文件所做的就是使java实例可供运行时使用。您可以在java和javascript中手动执行此操作 javascript
function MyBean{
this.getInstance = function(){
return de.company.project.MyBean.getInstance();
}
return this;
}
Java
public static getInstance(){
Map<String, Object> scopeMap = ExtLibUtil.getSessionScope();
if(!scopeMap.containsKey(BEAN_NAME)){
scopeMap.put(BEAN_NAME, new MyBean();)
}
return scopeMap.get(Bean_Name);
}
同样,黑客,但有时没有什么比得上一个好黑客!还请记住,这将不允许EL(我不认为)严格地获取类的实例。事实上,我在第一个faces配置中添加了所有托管bean。没关系。 易于理解的 它对我所有的基都是继承的,如果不调用这些基或模型,类就不会创建这些基或模型!
谢谢大家 很高兴知道。我很好奇是否建立自己的OSGi插件/库是唯一的选择。你说:“如果你有很多东西,你可以考虑将设计元素迁移到扩展库中,这样你的任何应用程序都能从中受益。”你是怎么做到的?请用java类创建一个库,不是吗?但是您在哪里声明托管bean??或者我创建一个工厂来实例化java类(没有托管bean,所以只有bean),托管bean需要在每个nsf中声明。当然,当您构建自己的库时,您可以设计自己的全局对象。XPages扩展库书还解释了如何创建自己的库我真的怀疑它是否能与EL一起工作。我就是不明白它怎么会这样。不过,使用getters(),您肯定可以检索列表和其他有趣的东西,使您可以将代码保存在java中,并保存在两个不同的位置,从而简单地实现继承。取舍将是EL和其他一些特定于bean的能力。但是,您可以将对象保留在内存中,以允许一些范围缓存。很好。但是由于缺乏EL支持,这真的是一个很好的主意。你不能总是吃蛋糕和咖啡。我不太确定这是个好主意。如果您有一个只从第一个模板继承而不包含第二个模板中定义的代码的数据库,那么如果您不小心使用了一个缺少java类的已定义bean,则会出现异常。我想,如果你对每件事都有很好的记录和评论,那就“好了”,但我认为你是在自找麻烦。
import ssjs_MyBean;