Как получить выбранный ряд данных Icefaces с помощью радиокнопки? - PullRequest
0 голосов
/ 02 февраля 2011

Как я могу выбрать строку в ледяных лицах, которые можно установить с помощью радио-кнопки?

Я пробовал со следующим

<h:selectOneRadio styleClass="none" valueChangeListener="#{bean.setSelectedItem}"
                onclick="dataTableSelectOneRadio(this);">
                <f:selectItem itemValue="null" />
            </h:selectOneRadio>

И мой JavaScript

function dataTableSelectOneRadio(radio) {
    var id = radio.name.substring(radio.name.lastIndexOf(':'));
    var el = radio.form.elements;
    for (var i = 0; i < el.length; i++) {
        if (el[i].name.substring(el[i].name.lastIndexOf(':')) == id) {
            el[i].checked = false;
        }
    }
    radio.checked = true;
}

В другомпост я получил ответ, что я должен заменить form.name на form.id.Однако после этого я получаю сообщение об ошибке

radio.form is undefined 
var elements = radio.form.elements;

Может ли кто-нибудь помочь мне решить эту проблему.

Я бы хотел выбрать одну строку в виде ледяных граней, доступную для данных, с помощью переключателя.

Любая помощь очень важна.

Спасибо

Публикация моего сгенерированного html-источника

Смотрите здесь jsf-код для радиокнопки

<h:selectOneRadio  valueChangeListener="#{bean.setSelectedItem}"
id="reqselect" onclick="dataTableSelectOneRadio(this);">
<f:selectItem itemValue="null" />
</h:selectOneRadio>

Myискренне извиняюсь за публикацию в правильном html-источнике, я проверял кое-что еще, и поэтому был опубликован неверный источник.Ниже приведен мой правильный источник HTML, пожалуйста, посмотрите, если вы могли бы найти что-нибудь.

Ответы [ 2 ]

2 голосов
/ 12 февраля 2011

Вы должны использовать ice: selectOneRadio с макетом спреда:

<ice:selectOneRadio id="myRadioId" layout="spread" ... /> 
<ice:dataTable ... >
    <ice:column ...>
        <ice:radio for="myRadioId" ... />
    </ice:column>
    ...
</ice:dataTable>
0 голосов
/ 02 февраля 2011

Вот как выглядит сгенерированный HTML каждой радиокнопки:

<table id="crud:tab_cr:9:_id53" border="0" onkeypress="dataTableSelectOneRadio(this);">
  <tr>
    <td>
      <input type="radio" name="crud:tab_cr:9:_id53" id="crud:tab_cr:9:_id53:_1" value="null" onkeypress="dataTableSelectOneRadio(this);Ice.util.radioCheckboxEnter(form,this,event);" />
      <label for="crud:tab_cr:9:_id53:_1">null</label>
    </td>
  </tr>
</table>

Таким образом, IceFaces, по-видимому, отображает всю HTML-таблицу вокруг радиокнопки и помещает функцию JS на <table>.Очевидно, что функция JS там вообще не принадлежит (кроме того, что onkeypress неверно, оно должно быть onclick).

<h:selectOneRadio> не отображает всю таблицу вокругдефолт.Это может означать только то, что вы на самом деле использовали <ice:selectOneRadio> или что IceFaces заменили стандартное средство визуализации для <h:selectOneRadio>.Вам нужно исправить это в этом углу.Либо замените на <h:selectOneRadio>, либо сообщите об ошибке ребятам из IceFaces, что их радио-рендерер неправильно помещает функцию JS и на элемент <table>.

...