2016-11-30 3 views
1

У меня есть радиокнопки в таблице с тем же именем группы. Есть ли относительно простой способ проверить это поле при отправке формы без использования CCJS?Проверка правильности кнопок Xpages по имени группы?

<xp:td> 
    <xp:radio id="radio120" groupName="R_1" value="#{document1.R_1}" selectedValue="1"></xp:radio> 
</xp:td> 
<xp:td> 
    <xp:radio id="radio120" groupName="R_1" value="#{document1.R_1}" selectedValue="2"></xp:radio> 
</xp:td> 

При регулярном радио управления Кнопка группы, я использую validateRequired с контролем ErrorMessage, чтобы отобразить сообщение.

<xp:radioGroup styleClass="A2" style="border:0px;" value="#{document1.Necktie}" layout="pageDirection" id="Necktie"> 
    <xp:this.validators> 
     <xp:validateRequired message="REQUIRED!"></xp:validateRequired> 
    </xp:this.validators> 
    <xp:selectItem itemLabel="No" id="selectItem13"></xp:selectItem> 
    <xp:selectItem itemLabel="Yes" id="selectItem14"></xp:selectItem> 
</xp:radioGroup> 
<xp:message id="message10" for="Necktie"></xp:message> 
+0

Я думаю, что название группы используется только для группировки относительно отображения коробки радио вместе? Есть ли причина, по которой вы не хотите использовать стандартную радиогруппу с validateRequired? –

+0

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

ответ

0

Используйте документ источника данных1 на стороне сервера, чтобы выяснить, является ли один из были выбраны ваши переключатели.
Тест на document1.getItemValueString("R_1"). Если он пуст, установите сообщение об ошибке и верните false. В противном случае сохраните документ.

<xp:button value="Save" id="button1"> 
    <xp:eventHandler event="onclick" submit="true" 
     refreshMode="complete"> 
     <xp:this.action><![CDATA[#{javascript: 
      if (document1.getItemValueString("R_1") == "") { 
       facesContext.addMessage(null, 
        new javax.faces.application.FacesMessage("select a radio")); 
       return false; 
      } 
      document1.save(); 
     }]]></xp:this.action> 
    </xp:eventHandler> 
</xp:button> 
<xp:messages id="messages1" /> 
+0

Это работает. поскольку он отображает сообщения об ошибках ниже моей кнопки. Однако «return false»; не останавливает запуск сценария там. Он продолжается до document1.save(). Так получилось, что я увеличиваю счетчик страниц при многостраничном опросе, который отображает новый набор вопросов на одной и той же странице xpage. Как вы думаете, в чем проблема? –

+0

Возврат возвращается. Он не может попасть в строку 'document1.save()'. Возможно, у вас есть 'document1.save()' в другом коде действия или вы используете кнопку «Отправить» с свойством 'save =" true "' ... –

+0

Тип кнопки - «Кнопка». У меня нет save = "true", но я делаю полный Update . Однако это не должно сохранять документ, пока он не попадет в строку document1.save(), правильно? –

0

Справедливо ... В этом случае, вне делать что-то с CSJS, я не слишком уверен ....

Не уверен, если это поможет, но посмотрите на этот пост Marky Роден: https://xomino.com/2012/03/10/checking-xpages-radio-buttons-have-been-selected-with-jquery/

Я не делал никакой работы развития на 4/5 недель в конце года приходит, так что мой мозг разве на самом деле работает, как он должен .....

+0

Это решение предлагает использовать это, чтобы получить имя группы моих переключателей, но тогда, где я могу это сделать, чтобы выполнить проверку? # {javascript: getComponent ("radio1"). getClientGroupName (facesContext, getComponent ("radio1"))} –

+0

Не могли бы вы сделать что-то вроде if ($ ("[name $ = CHECKBOXGROUPNAME]: checked"). val() = '') { msg = "Выберите параметр \ n"; } –

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