Действие на JSF Drop Down Value - PullRequest
       21

Действие на JSF Drop Down Value

1 голос
/ 05 января 2012

У меня есть страница 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 и т. Д. И т. Д. Я знаю, что невозможно добавить метод для каждого значения в раскрывающемся списке.

Ответы [ 2 ]

2 голосов
/ 05 января 2012

Создать частное свойство:

public class GeneratePdf {
    private String selectedValue;
    //getter/setter

привязать его к selectonemenu:

<h:selectOneMenu id="valueList" value="#{generatePdf.selectedValue}"

При отправке значение selectedValue будет выбрано в раскрывающемся списке.Вы можете использовать его в методе pdfReport().

0 голосов
/ 05 января 2012

Мне нужно создать PDF для значений, выбранных из выпадающего списка. если выбран «abc», он должен вызывать methodAbc (), если выбран «xyz», он должен вызывать methodXyz ().

Предполагая, что вы установили getter и setters для selectedValue, и вы связали эту переменную с selectonemenu, как предлагается в другом ответе, единственный способ, который я вижу, это:

void methodGeneral() {    // always invoked
    if (selectedValue.equals("abc") {
        methodAbc();
    else if (selectedValue.equals("xyz") {
        methodXyz();
    // etc etc

Также раскрывающийся список может содержать больше значений - abc, xyz, pqr, rst и т. Д. И т. Д. Я знаю, что невозможно добавить метод для каждого значения в раскрывающемся списке.

Я согласен: это не особенно выполнимо, но это именно ваше требование.

...