报表模板的动态选择解决方案



我的需求是这样的,

当我选择像考试这样的模板时,将生成具有考试字段的考试页面(具有尊重的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()},我想这些是标签,我不确定

希望我能帮忙。

最新更新