2015-10-26 5 views
0

Я использую h selectOneMenu в формате данных и когда пользователь нажимает кнопку Set Fixture, я сохраняю значение, измененное в раскрывающемся списке, на данный момент я использую String, чтобы получить выбранное значение, но проблема заключается в том, что выбранное значение имеет только последнее раскрывающееся меню. Мой вопрос в том, как получить список всех выпадающих списков?Как получить несколько h: selectOneMenu значений внутри h: dataTable

<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

В настоящее время ваше выпадающее значение относится к одному переменному в вашем бобе (который, кажется, selectedFixture класса SetAlmFixtures). Как одна переменная будет представлять состояние (значение) для нескольких строк (здесь: аварийные сигналы)?

Вам нужно связать выбранное значение с строкой (сигнализацией), на которую оно ссылается. Для этого у вас есть несколько вариантов, два подхода следующие:

  1. использовать переменный ваш будильник-объект, точно так же, как вы использовали их в качестве outputvalues ​​внутри других столбцов. Таким образом, прибор сигнализации устанавливается непосредственно на обработку значения (формы). В настоящее время обе кнопки отправляют форму (type="submit" по умолчанию), в зависимости от того, что делают ваши исполнители действий, вы можете подумать об изменении Отмена -button's type по button.

  2. Подключить светильники и сигнализацию. Вы можете использовать что-то вроде Map<Long, Fixture> fixturemap;, отображая идентификаторы идентификатора тревоги на их выбранное устройство, при условии, что все тревоги имеют ненулевой идентификатор. Значение карты может быть отправлено setAlmFixtures.fixturemap['alarmvar.id']. Убедитесь, что вы предоставили getter для карты и идентификатора. Кроме того, вам необходимо инициализировать карту с начальными значениями прибора для каждого аварийного сигнала.

Смежные вопросы