我真的需要你的帮助。 首先,我想告诉您我是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
感谢。