我正在数据表中使用h selectOneMenu,当用户按下Set Fixture按钮时,我将保存下拉列表中更改的值,现在我使用String变量来获取所选值,但问题是它从最后一个下拉列表中选择所选值。 我的问题是如何获取所有下拉菜单的列表?
<h:form id="chooseAlmFixtureForm">
<p:panel style="width:80%" header="Set Fixture for Alarms">
<p:dataTable id="tbsetFixtureTable" value="#{setAlmFixtures.alarms}" var="alarmvar" dynamic="false">
<p:column>
<p:commandLink value="View" update=":viewUnknownAlarm" immediate="true" oncomplete="viewDialog.show()">
<f:setPropertyActionListener target="#{currentalarms.viewAlarm}" value="#{alarmvar}"/>
</p:commandLink>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Alarm Time"/>
</f:facet>
<h:outputText value="#{alarmvar.recvTime}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Alarm Type"/>
</f:facet>
<h:outputText value="#{alarmvar.alarmType}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Controller Name"/>
</f:facet>
<h:outputText value="#{alarmvar.controllerName}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Controller Type"/>
</f:facet>
<h:outputText value="#{alarmvar.controllerType}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Choose Fixture"/>
</f:facet>
<h:selectOneMenu id="selectAlarmSite" value="#{setAlmFixtures.selectedFixture}">
<f:selectItems value="#{setAlmFixtures.fixtures}" />
</h:selectOneMenu>
</p:column>
</p:dataTable>
<p:commandButton value="Set Fixtures" actionListener="#{setAlmFixtures.setAlarmsFixtures}" action="#{horizontalmenu.actionCallAlarmsPage}" styleClass="dialogButton"/>
</td><td>
<p:commandButton value="Cancel" actionListener="#{setAlmFixtures.releaseAlarms}" action="#{horizontalmenu.actionCallAlarmsPage}" styleClass="dialogButton"/>
</p:panel>
</h:form>
答案 0 :(得分:0)
目前,您的下拉值是指您的bean中的单个变量(类似selectedFixture
的{{1}})。单个变量如何表示多行的状态(值)(此处为:报警)?
您需要将所选值链接到它引用的行(警报)。为此,您可以选择以下两种方法:
使用alarm-object的变量,就像在其他列中使用它们作为outputvalues一样。这样,报警装置直接设置在值(表格)处理上。目前,您的两个按钮都提交了表单(默认为SetAlmFixtures
),具体取决于您的操作说明者所执行的操作,您可以考虑更改取消 - 按钮type="submit"
到type
。
映射灯具和警报。假设所有警报都具有非空id,您可以使用button
将警报ID映射到其选定的装置。地图的值可以由Map<Long, Fixture> fixturemap;
引用。确保为地图和id提供getter。此外,您需要使用每个警报的初始夹具值初始化地图。