Ошибка: не удалось установить значение свойства в null в логическом свойстве в bean-компоненте - PullRequest
0 голосов
/ 29 марта 2012

В моем бине есть логическая (примитивная) переменная. Мне нужно, чтобы его значение было истинным или ложным в зависимости от переключателя, выбранного пользователем.

Я использую переключатели JSF в двух разных столбцах одной строки таблицы данных jsf. Требуется, чтобы я использовал переключатели в двух столбцах одной строки.

Теперь я должен убедиться, что выбран только один из идентификаторов кнопок для строки.

Итак, мой подход,

Я использую одну радиокнопку, привязанную к бину, а другую - как фиктивную.

<h:column>
 <h:selectOneRadio id="mixtas" value="#{bean.mixtas}">
  <f:selectItem itemValue="true"></f:selectItem>
 </h:selectOneRadio>    
</h:column>

<h:column>
 <h:selectOneRadio id="exclusi" >
  <f:selectItem itemValue="true"></f:selectItem>
 </h:selectOneRadio>
</h:column>

И я обрабатываю только одну функцию, используя jquery

$('input[id*="mixtas"]').live("click",function(){
    var $index = this.id.split(':')[2]; \\to identify the row index
    var $id = $index+":exclusi:0"; \\generating id for other radio button
    $('table[id$="'+$id+'"]').attr("checked",false); \\ to make the other radio false   
});

$('input[id*="exclusi"]').live("click",function(){
    var $index = this.id.split(':')[2]; \\ to identify the row index
    var $id = $index+":mixtas:0"; \\generating id for other radio button
    $('input[id$="'+$id+'"]').attr("checked",false); \\ to make the other radio false   
});

Функциональность работает. По крайней мере половина (я все еще работаю над остальными).

Но проблема в том.

Если у меня выключена кнопка-переключатель mixtas, и я пытаюсь перейти на другую страницу. Это выдает ошибку " Свойство mixtas не может быть установлено равным нулю ".

Есть ли способ присвоить ему значение false, а не null. Может быть, в jquery или через бин.

Любые предложения, пожалуйста ....

Заранее спасибо.

1 Ответ

0 голосов
/ 29 марта 2012

Из ваших предыдущих вопросов я предполагаю, что вы используете JSF 2.0.Тогда вы можете получить желаемое поведение без пользовательского JavaScript:

<h:column>
  <h:selectOneRadio value="#{bean.mixtas}" id="mixtas">
    <f:selectItem itemValue="true"/>
    <f:ajax render="exclusi"/>
  </h:selectOneRadio>
</h:column>

<h:column>
  <h:selectOneRadio value="#{bean.mixtas}" id="exclusi">
     <f:selectItem itemValue="false"/>
     <f:ajax render="mixtas"/>
  </h:selectOneRadio>
</h:column>
...