2014-02-10 30 views
1

鑽嘴魚科2.1.5/Java的如何訪問兩個不同的Java實體參數支持bean方法

我有兩個實體:即

class Primary { String name; String age } 
class Second { String dept; String hour } 
... 

在我託管bean我公司開發的函數生成關於我的前端主面單選按鈕(Primary或​​Second)的PDF。

如果我在單選按鈕主選項選擇,該託管bean方法將火generatePDF()和generatePDF裏面我有:

Primary pr = new Primary(); 
pr.name = xxxxx; 
pr.age = yyyyy; 
... 
... 

但我該怎麼做才能重利用相同的方法generatePDF爲兩個實體(主要和第二?我需要訪問兩個實體屬性有關我的無線電選擇。

我需要動態實例化實體(或我在一次或兩次給予初級或二次給藥)

+0

你的意思是你想在同一個方法中按照你的無線電選擇一次實例化一個類? – VibrantVivek

+0

是的。 @Vivekbhatnagar – Al2x

+0

有沒有任何提交按鈕也點擊哪些事情會發生?或者只需選擇你想要的單選按鈕。 – VibrantVivek

回答

1

怎麼樣做這樣的事情。

interface Pdfeable{ String writeToPDF();} 
class Primary implements Pdfeable { String name; String age } 
class Second impleaments Pdfeable { String dept; String hour } 

只需覆蓋您想要發送數據到PDF的語句。

class Primary implements Pdfeable { 
    String name; String age; 
    public String writeToPDF(){ 
     return getName() + "" + getAge(); 
    } 
} 

並使用接口定義而不是具體的類來編寫代碼。

+0

我有很多實體字段在pdf生成器中使用。只有樣本中只有兩個。 – Al2x

+0

考慮使用反射遍歷所有字段並仍然使用接口。檢查這個http://stackoverflow.com/questions/3333974/how-to-loop-over-a-class-attributes-in-java – Koitoer

+0

我用反射得到它。 ty – Al2x

1

根據你的問題,你需要一次按照單選按鈕選擇一個類實例,我建議你應該爲你的單選按鈕創建一個valueChangeListener。我已經對無線選擇項的值進行了硬編碼,你可以用任何方式通過bean綁定或硬編碼。

<h:selectOneRadio value="#{myBean.myRadioValue}" ... onclick="this.form.submit();" valueChangeListener="#{myBean.generatePDF}"> 
    <f:selectItem itemValue="Radio1" itemLabel="Primary-radio" /> 
    <f:selectItem itemValue="Radio2" itemLabel="Secondary-radio" /> 
    </h:selectOneRadio> 

此代碼將提交在檢測的onclick的Javascript事件時的單選按鈕被包含的形式。在服務器端,執行generatePDF動作。在這種方法中,你可以做你的requiste上提交行動getter和setter方法被調用,您可以檢查哪些無線電使用,如果進行比較,選定(),做你的東西:

public void generatePDF(ValueChangeEvent evt) { 
    if(getMyRadioValue.equals(Radio1)){ 
    Primary pr = new Primary(); 
pr.name = xxxxx; 
pr.age = yyyyy; 
} 
else if(getMyRadioValue.equals(Radio2)){ 
Secondary s = new Secondary(); 
s.dept = xxx; 
s.hour = yyyy;} 

... 。 ..

}

+0

沒辦法。我有很多字段需要在pdf中生成。這樣我重複了很多代碼。 – Al2x

+0

首先請點擊任何提交或只是選擇後,告訴您是否這一切?另外,請詳細說明你的問題,你想要什麼,沒有提到你有很多領域。請編輯並重新來。 – VibrantVivek

+0

如果有多個字段,那麼你必須使用像獲取radioButton值的id從視圖到bean和在bean中作爲每個id選擇你必須實例化,例如:Clazz c = Class.forName(ClassName); – VibrantVivek

相關問題