繁体   English   中英

如何在后备bean方法中访问两个不同的Java实体作为参数

[英]how to access two different java entities as parameters in backing bean method

Mojarra 2.1.5 / Java

我有两个实体:

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

在我的托管bean中,我开发了一个函数,用于生成有关我的前端素面单选按钮(Primary或​​Second)的PDF。

如果我在单选按钮中选择Primary选项,则托管bean方法将触发generatePDF(),并且在generatePDF内包含:

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

但是,我该如何为两个实体重新使用相同的方法generatePDF(Primary和Second ??我需要访问有关无线电选择的两个实体属性。

我需要动态实例化实体(或者一次实例化Primary或​​Itanityty Second)

怎么做这样的事情。

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();
   }
}

并使用接口定义而不是具体的类编写代码。

假设根据您的问题每次选择单选按钮一次都需要一个类实例化,建议您为单选按钮创建一个valueChangeListener。我已对radio selectItem的值进行了硬编码,可以通过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操作。 在这种方法中,您可以像在Submit操作上那样执行请求,将调用getter和setter,并且可以通过使用if()比较来检查选择了哪个单选,然后执行以下操作:

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;}

……

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM