如何在ajax进程后获取selectonemenu值

时间:2015-02-27 10:56:55

标签: jsf primefaces jsf-2.2

我真的需要你的帮助。 首先,我想告诉您我是JSF的初学者。

我有一个包含多个参数的表单。 flowtype字段有2个选项:Sync和async。 在第一次启动时,我能够获取源值,但是当它传递给异步时,我正在对数据库进行查询,以便使用ajax填充源,数据类型...并且它工作得很好但我不再了能够检索selectOneMenu的值。我收到了错误验证...

这是我的表格:

<h:form id="monitoring_form">
   <p:growl id="msgs" showDetail="true" />

       <p:panel header="Select a Location" style="margin-bottom:10px;">

       <p:outputLabel id="flowType_label" value="Flow Type : "/>
       <h:selectOneMenu id="flowType_select" value="#{monitoringBean.flowType}">
            <p:ajax listener="#{monitoringBean.onFlowTypeChange}" process="@this" update="source_select,:monitoring_form:dataType_select" />
            <f:selectItem itemLabel="Select a flow type" itemValue="" noSelectionOption="true" />
            <f:selectItem itemValue="async" itemLabel="ASYNC" />
            <f:selectItem itemValue="sync" itemLabel="SYNC" />
      </h:selectOneMenu>

      <p:outputLabel id="source_label" value="Source"/>
            <h:selectOneMenu id="source_select" value="#{monitoringBean.source}">
            <f:selectItem itemLabel="ALL" itemValue=""/>
            <f:selectItems value="#{monitoringBean.resultSource}"/>
      </h:selectOneMenu><br/>

      <p:outputLabel id="dataType_label" value="Datatype : "/>
            <h:selectOneMenu id="dataType_select" value="#{monitoringBean.dataType}">
            <f:selectItem itemLabel="ALL" itemValue="" noSelectionOption="true"/>
            <f:selectItems value="#{monitoringBean.resultDataType}"/>
            </h:selectOneMenu>

    <p:commandButton ajax="false" id="submit" actionListener="#{monitoringBean.buttonAction}" value="Submit" type="submit" icon="ui-icon-check" />
    <p:commandButton value="Reset" type="reset" icon="ui-icon-close"/>

    </p:panel>
</h:form>

这是我的onFlowChangeValue:

public void onFlowTypeChange(AjaxBehaviorEvent event) throws SQLException {
    if (flowType != null && !flowType.equals("") && !flowType.equals("sync")) {
        addMessage("Welcome to Primefaces!!" + " source : " + source);
        selectSourceApplicationFromTable(); // -> add to resultSource list of selectItem..
        selectDataTypeFromTable(); // ->add to resultDataType list of selectItem..
    }
}

我检查了flowTypeValue并向数据库发出请求,以便填充selectOneMenu。

这是我的按钮提交操作方法:

public void buttonAction(ActionEvent actionEvent) {
    addMessage("Welcome to Primefaces!!" + " source : " + source);
    System.out.println("Source : " + source);
}

首先不使用表格只需按提交我就得到:“”欢迎使用Primefaces !!“+”来源:“+ null”罚款。但是当我更改flowtype值时,我在提交时遇到了错误。

如何获取selectOneMenu值? 为什么使用我的bean#{monitoringBean.source}无法访问它?

PS:我使用了本教程:http://www.primefaces.org/showcase/ui/ajax/dropdown.xhtml

感谢。

0 个答案:

没有答案