[英]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.