我的需求是这样的,
当我选择像考试这样的模板时,将生成具有考试字段的考试页面(具有尊重的POJO),当选择游戏页面时,将产生具有其字段的页面,
我如何实现这种类型的需求。主要目标是,bean不需要为选择哪个模板而烦恼。它是完全独立的。
我没有解决整个问题,但我会尽力帮助你
您可以为您的bean类使用Template Method
设计模式,并且在JSF页面中,您可以调用抽象类方法。类似以下内容:
public abstract class AbstractBean {
public void templateMethod(){
//Same code for all children;
foo();
//Same code for all children;
}
protected abstract void foo();
}
public class Bean extends AbstractBean {
protected void foo(){
//Your specific code here;
}
}
然后,在JSF页面中,您可以只调用#{abstractBean.templateMethod()}
。但我真的不确定如何将子类注入到#{abstractBean}
变量中
不过,有一个Facelet标签可能会以另一种方式帮助您:ui:param
。看看这个:http://www.oracle.com/technetwork/articles/java/facelets-454361.html.与前面的代码无关,这是另一种解决方案。我自己已经用过了。您可以在模板页面(ui:define
)中定义一个变量,在特定页面中,您只需使用ui:param
为模板页面中定义的变量设置一个值。然后你打电话给#{definedVariable.someMethod()}
,我想这些是标签,我不确定
希望我能帮忙。