2017-01-24 13 views
1

У меня есть следующие требования в качестве XPages приложения:Получить выберите значение радио кнопки группы в XPages по SSJS

У меня есть кнопка радио группы с двумя вариантами. У меня есть поле со списком, значения которого будут вычисляться из опции, выбранной в группе переключателей. Параметры будут вычисляться из частичного обновления выпадающего списка, связанного с событием onChange переключателя.

Моя проблема заключается в том, что я не смог получить значение, выбранное на переключателе, для установки параметров combobox. Поскольку я делаю сборку через SSJS, я должен получить значение, выбранное на переключателе, также в SSJS. Есть ли какой-либо компонент/метод на xpages, из которого я могу получить выбранное значение?

Я знаю, что через компонент RPC или jquery можно получить через CSJS выбранное значение, но я только хотел использовать SSJS.

Grateful

Кнута,

Я сделал пример на основе вашего предложения, в соответствии с приведенным ниже кодом, но он не работает. Потому как?

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 
<xp:radioGroup id="radioGroup2"> 
    <xp:selectItem itemLabel="a"></xp:selectItem> 
    <xp:selectItem itemLabel="b"></xp:selectItem> 
    <xp:selectItem itemLabel="c"></xp:selectItem> 
    <xp:eventHandler 
     event="onclick" 
     submit="true" 
     refreshMode="partial" refreshId="computedField2" execMode="partial" execId="radioGroup2"> 
    </xp:eventHandler></xp:radioGroup> 
<xp:text 
    escape="true" 
    id="computedField2" 
    value="#{javascript:getComponent('radioGroup2').getValue()}"> 
</xp:text><xp:br></xp:br><xp:br></xp:br> 
</xp:view> 

ответ

0

Использование

getComponent('radioGroup1').getValue() 

Заменить "radioGroup1" с идентификатором вашей радиокнопок группы.

Вот пример:

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view 
    xmlns:xp="http://www.ibm.com/xsp/core"> 
    <xp:radioGroup 
     id="radioGroup1" 
     value="#{viewScope.radio}"> 
     <xp:selectItem itemLabel="a" /> 
     <xp:selectItem itemLabel="b" /> 
     <xp:eventHandler 
      event="onclick" 
      submit="true" 
      refreshMode="partial" 
      refreshId="checkBoxGroup1" execMode="partial" execId="radioGroup1"> 
     </xp:eventHandler> 
    </xp:radioGroup> 
    <xp:br></xp:br> 
    <xp:checkBoxGroup 
     id="checkBoxGroup1" 
     value="#{viewScope.check}"> 
     <xp:selectItems> 
      <xp:this.value><![CDATA[#{javascript: 
       if (!getComponent('radioGroup1').getValue()) { 
        return []; 
       } 
       if (getComponent('radioGroup1').getValue() == 'a') { 
        return ['A1', 'A2']; 
       } 
       return ['B1', 'B2']; 
      }]]></xp:this.value> 
     </xp:selectItems> 
    </xp:checkBoxGroup> 
</xp:view> 

Вместо getComponent('radioGroup1').getValue() вы могли бы использовать в качестве viewScope.radio значения радиоприемника сохраняется в переменном виде области видимости в данном примере.

+0

Это я пробовал и не работал. В коде SSJS поля со списком возвращается значение null. Должен ли я использовать это значение в событии Onchage переключателя и связывать его с переменной области? –

+0

Он должен быть в частичном обновлении кода combobox, где вы вычисляете selectItems. –

+0

Не могли бы вы привести пример кода? –

0

Я поступил аналогичным образом, используя getComponent («RadioButtonGroup1»). GetValue() в вычисленных значениях для combobox. Или вы могли бы использовать это:.

this.getParent() ПолучитьЗначение()

в OnChange для заполнения контекстного переменного, которую основывает свое выпадающую с.

+0

Привет, это сработало! Но как я мог это сделать без использования переменной области? Я уже много использую и хотел бы избежать создания большего из-за проблем с производительностью. –

+0

Использование getComponent может быть намного хуже, чем убийца производительности; вы можете прочитать это (как всегда) отличное объяснение от одного из наших гуру: http://avatar.red-pill.mobi/tim/blog.nsf/d6plinks/TTRY-942UPQ –

+0

Кроме того, если вы используете requestScope, это жизнь очень коротка. Поскольку компонент находится на странице, он доступен для каждого запроса. Но независимо от того, сохраняете ли вы его в requestScope или viewScope, влияние сохранения одной строки будет минимальным. –