У меня есть страница JSF, раскрывающийся список, где значения извлекаются из службы.
<h:selectOneMenu id="valueList" value="#" style="height:20px;">
<f:selectItem itemValue="Select Action" itemLabel="Select Action" />
<f:selectItems value="#{sampleService.sampleMethod}"
var="SampleExport" itemValue="#{SampleExport}"
itemLabel="#{SampleExport}">
</f:selectItems>
</h:selectOneMenu>
список экспорта содержит - abc, xyz
sampleService class
public class SampleServiceImpl implements .... {
private List<String> sampleList;
public List<String> getSampleList;() {
return sampleList;
}
public void setSampleList;(List<String> sampleList;) {
this.sampleList=sampleList;;
}
/**
* Method for List to be displayed in drop down
*/
public void sampleMethod(){
if (sampleList== null) {
sampleList = new ArrayList<String>();
sampleList.add("abc");
sampleList.add("xyz");
}
setSsampleList(sampleList);
}
}
и есть кнопка действия, которая используется для создания PDF-файла на основе выбора типа значения, то есть abc или xyz.
кнопка clicktoPdf
<ui:define name="actions">
<h:commandButton styleClass="inputbutton" value="GeneratePdf" id="export"
action="#{generatePdf.pdfReport}" style="float:right;width : 73px;" />
</ui:define>
public class GeneratePdf {
public void pdfReport() {
..........
...code....
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
..........
.code..........
methodAbc(){
.....
}
method Xyz(){
......
}
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
externalContext.setResponseContentType("application/vnd.ms-excel");
externalContext.setResponseHeader("Content-Disposition",
"attachment; filename=\"Sample Report\"");
workbook.write(externalContext.getResponseOutputStream());
facesContext.responseComplete();
}
}
Мне нужно создать PDF для значений, выбранных из выпадающего списка. если выбран «abc», он должен вызывать methodAbc (), если выбран «xyz», он должен вызывать
methodXyz ().
Также раскрывающийся список может содержать больше значений - abc, xyz, pqr, rst и т. Д. И т. Д. Я знаю, что невозможно добавить метод для каждого значения в раскрывающемся списке.