2013-02-22 125 views
0

我的要求是這樣的動態選擇,解決方案的報告模板

當我選擇像考試模板,將生成的考試頁面有考試場(有尊重POJO的),並且在選擇遊戲頁,頁面將生成其字段,

我該如何實現這種類型的需求。主要目標是,bean無需打擾選擇哪個模板,它是完全獨立的。

+0

請指定您使用的模板類型以及您正在談論的是哪種bean? (ManagedBean/JavaBean/POJO)。 – 2013-02-22 11:20:06

+0

@Guizzo:謝謝你的回覆,我正在使用CDI bean – Sagar 2013-02-22 12:13:11

回答

0

我沒有得到全部問題,但我會盡力幫忙。
您可以爲您的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()}我覺得這些都是標籤,我不確定。

希望我能幫上忙。