public boolean isLanguageNameValid() { this.languageNameValidationMessage = null; // reset this.languageNameWarningMessage = null; // reset if (language.length() > LENGTH_LIMIT) { this.uLocale = null; this.languageNameValidationMessage = msgs.get("jsf.language.validation.Invalid"); return false; } // Cannot use FacesMessages as they are request scoped. // Cannot use UI binding as they don't work in Page scoped beans // TODO Use the new (since 1.7) FlashScopeBean // Check that locale Id is syntactically valid LocaleId localeId; try { localeId = new LocaleId(language); } catch (IllegalArgumentException iaex) { this.languageNameValidationMessage = msgs.get("jsf.language.validation.Invalid"); return false; } // check for already registered languages if (localeServiceImpl.localeExists(localeId)) { this.languageNameValidationMessage = msgs.get("jsf.language.validation.Existing"); return false; } // Check for plural forms if (resourceUtils.getPluralForms(localeId, false) == null) { this.languageNameWarningMessage = msgs.get("jsf.language.validation.UnknownPluralForm"); } // Check for similar already registered languages (warning) List<HLocale> similarLangs = localeDAO.findBySimilarLocaleId(localeId); if (similarLangs.size() > 0) { this.languageNameWarningMessage = msgs.get("jsf.language.validation.SimilarLocaleFound") + similarLangs.get(0).getLocaleId().getId(); } return true; }