Проверка подлинности Java-сценария, что должен быть выбран один из f: selectItem - PullRequest
1 голос
/ 21 ноября 2011

Я хочу написать код проверки JavaScript для проверки того, что должен быть выбран один из f: selectItem, но я не могу получить доступ к проверенному свойству f: selectItem через сценарий java. Ниже моя страница JSF.

Страница JSF: -

<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html> 
 <f:view> 
    <body 
        <h:form styleClass="form" id="form1"">
            <h:selectOneRadio id="searchType" value="#{auditTrailDTO.searchType}">
            <f:selectItem itemLabel="Male" itemValue="m"/>
            <f:selectItem itemLabel="FeMale" itemValue="f"/>
        </h:selectOneRadio>
        </h:form>
    </body>
</f:view>
 </html>

AuditTrailDTO.java: -

class AuditTrailDTO
 private string searchType;
 public String getSearchType() {
    return searchType;
 }
 public void setSearchType(String searchType) {
    this.searchType = searchType;
 }
}

Edit: -

Мне удалось получить доступ к f: selectItem следующим образом. Теперь, когда никто не выбран, он показывает предупреждающее сообщение, как и ожидалось. Но он показывает предупреждающее сообщение, даже когда выбрана вторая из переключателей. Я вызываю ниже метод в форме на аттрибуте. Любая идея, пожалуйста?

function validateForm(){
var searchType = document.getElementsByName("form1:searchType");
var a = !(searchType[0].checked);
var b = !(searchType[1].checked);
if(a&&b){
    alert('Please select search type');
        return false;
}
 return true;
} 

Ответы [ 2 ]

1 голос
/ 21 ноября 2011

Установите атрибут обязательный для тега

Если рендеринг равен

<input type="radio" name="form1:searchType" value="Male">
<input type="radio" name="form1:searchType" value="FeMale">

, то вы можетесделать это простым JS DEMO

window.onload=function() {
  document.getElementById('form1').onsubmit=function() {
    var isChecked = this.elements["form1:searchType"][0].checked || this.elements["form1:searchType"][1].checked;
    if (!isChecked) {
      alert('Please check gender');
      return false
    } 
  }
}
0 голосов
/ 21 ноября 2011

Вы можете попробовать с required и requiredMessage атрибутами:

<h:selectOneRadio required="true" requiredMessage="Message... ">
...
</h:selectOneRadio>

Вы можете поймать requiredMessage с:

<h:messages> или <h:message>

...