【问题标题】:Action on JSF Drop Down Value对 JSF 下拉值的操作
【发布时间】:2012-02-03 01:15:42
【问题描述】:

我有一个 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>

exportlist 包含 -abc, xyz

sampleService 类

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

还有一个操作按钮,用于根据选择的值类型(即 abc 或 xyz)生成 pdf。

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”,它应该调用 方法Xyz()。

下拉列表还可以包含更多值 - abc、xyz、pqr、rst 等。我知道为下拉列表中的每个值添加方法是不可行的。

【问题讨论】:

    标签: java jsf-2 apache-poi selectonemenu


    【解决方案1】:

    创建私有属性:

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

    将其绑定到选择菜单:

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

    提交时,selectedValue 将在下拉列表中选择值。您可以在pdfReport() 方法中使用它。

    【讨论】:

      【解决方案2】:

      我需要为从下拉列表中选择的值生成 pdf。如果选择“abc”,它应该调用methodAbc(),如果选择“xyz”,它应该调用methodXyz()。

      假设您已经为 selectedValue 设置了 getter 和 setter,并且您已将此变量绑定到 selectonemenu,如另一个答案中所建议的那样,我看到的唯一方法是:

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

      下拉列表还可以包含更多值 - abc、xyz、pqr、rst 等。我知道为下拉列表中的每个值添加方法是不可行的。

      我同意:这不是特别可行,但这正是您的要求。

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 2015-11-05
        • 1970-01-01
        • 2018-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多