From: Roland Häder <roland@mxchange.org>
Date: Mon, 1 Jun 2020 13:32:24 +0000 (+0200)
Subject: Please cherry-pick:
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=28518064b90843982b8e61334ce25c2d80f07183;p=jfinancials-war.git

Please cherry-pick:
- all extra email address validators (so not the generic one) have no attribute
  "allowEmptyRequiredData" anymore as the email address for them (e.g. branch
  office) is always optional
- converted own JSF tag core:outputAdminContactDataFormFields to template again
- reformatted some JSF tags to have each attribute in a single line
- the gender-specific backing bean was superflous since there is a "static
  data" backing bean
- added missing i18n string COUNTRY_POLAND (country was added in JFinancials)
- fixed tpzo in i18n key

Signed-off-by: Roland Häder <roland@mxchange.org>
---

diff --git a/src/java/org/mxchange/jfinancials/beans/contact/FinancialsContactWebRequestBean.java b/src/java/org/mxchange/jfinancials/beans/contact/FinancialsContactWebRequestBean.java
index 16e1407c..6ffa31b4 100644
--- a/src/java/org/mxchange/jfinancials/beans/contact/FinancialsContactWebRequestBean.java
+++ b/src/java/org/mxchange/jfinancials/beans/contact/FinancialsContactWebRequestBean.java
@@ -472,17 +472,6 @@ public class FinancialsContactWebRequestBean extends BaseFinancialsBean implemen
 		this.comment = comment;
 	}
 
-	@Override
-	public String getControllerType () {
-		return "general"; //NOI18N
-	}
-
-	@Override
-	@Deprecated
-	public void setControllerType (final String controllerType) {
-		throw new UnsupportedOperationException("Setting controller type is not supported."); //NOI18N
-	}
-
 	/**
 	 * Getter for country instance
 	 * <p>
diff --git a/src/java/org/mxchange/jfinancials/beans/contact/FinancialsContactWebRequestController.java b/src/java/org/mxchange/jfinancials/beans/contact/FinancialsContactWebRequestController.java
index ee1144b8..73693a1f 100644
--- a/src/java/org/mxchange/jfinancials/beans/contact/FinancialsContactWebRequestController.java
+++ b/src/java/org/mxchange/jfinancials/beans/contact/FinancialsContactWebRequestController.java
@@ -50,23 +50,6 @@ public interface FinancialsContactWebRequestController extends Serializable {
 	 */
 	Contact createContactInstance ();
 
-	/**
-	 * Getter for controller type
-	 * <p>
-	 * @return controller type
-	 */
-	String getControllerType ();
-
-	/**
-	 * Setter for controller type
-	 * <p>
-	 * @param controllerType Controller type
-	 * <p>
-	 * @deprecated Don't use this method.
-	 */
-	@Deprecated
-	void setControllerType (final String controllerType);
-
 	/**
 	 * Checks whether contact instance's email address is used
 	 * <p>
diff --git a/src/java/org/mxchange/jfinancials/beans/data/FinancialsDataWebApplicationBean.java b/src/java/org/mxchange/jfinancials/beans/data/FinancialsDataWebApplicationBean.java
index 2e8f5568..5ccd192d 100644
--- a/src/java/org/mxchange/jfinancials/beans/data/FinancialsDataWebApplicationBean.java
+++ b/src/java/org/mxchange/jfinancials/beans/data/FinancialsDataWebApplicationBean.java
@@ -85,10 +85,9 @@ public class FinancialsDataWebApplicationBean extends BaseFinancialsBean {
 	}
 
 	/**
-	 * Returns an array of all profile modes <p <p>
-	 * @
-	 *
-	 * return An array of all profile modes
+	 * Returns an array of all profile modes
+	 * <p>
+	 * @return An array of all profile modes
 	 */
 	public ProfileMode[] getProfileModes () {
 		return ProfileMode.values();
@@ -102,4 +101,5 @@ public class FinancialsDataWebApplicationBean extends BaseFinancialsBean {
 	public UserAccountStatus[] getUserAccountStatuses () {
 		return UserAccountStatus.values();
 	}
+
 }
diff --git a/src/java/org/mxchange/jfinancials/beans/gender/FinancialsGenderWebApplicationBean.java b/src/java/org/mxchange/jfinancials/beans/gender/FinancialsGenderWebApplicationBean.java
deleted file mode 100644
index ac1d0e9f..00000000
--- a/src/java/org/mxchange/jfinancials/beans/gender/FinancialsGenderWebApplicationBean.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2016 - 2020 Free Software Foundation
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jfinancials.beans.gender;
-
-import java.util.Arrays;
-import java.util.List;
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Named;
-import org.mxchange.jcontacts.model.contact.title.PersonalTitle;
-import org.mxchange.jfinancials.beans.BaseFinancialsBean;
-
-/**
- * A gender and title bean
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-@Named ("genderController")
-@ApplicationScoped
-public class FinancialsGenderWebApplicationBean extends BaseFinancialsBean implements FinancialsGenderWebApplicationController {
-
-	/**
-	 * Serial number
-	 */
-	private static final long serialVersionUID = 835_482_364_189L;
-
-	/**
-	 * Default constructor
-	 */
-	public FinancialsGenderWebApplicationBean () {
-		// Call super constructor
-		super();
-	}
-
-	@Override
-	public PersonalTitle[] getAllGenders () {
-		// Return it
-		return PersonalTitle.values();
-	}
-
-	@Override
-	public List<PersonalTitle> getSelectableGenders () {
-		// Return it
-		return Arrays.asList(PersonalTitle.values());
-	}
-
-}
diff --git a/src/java/org/mxchange/jfinancials/beans/gender/FinancialsGenderWebApplicationController.java b/src/java/org/mxchange/jfinancials/beans/gender/FinancialsGenderWebApplicationController.java
deleted file mode 100644
index efe90a0e..00000000
--- a/src/java/org/mxchange/jfinancials/beans/gender/FinancialsGenderWebApplicationController.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2016 - 2020 Free Software Foundation
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jfinancials.beans.gender;
-
-import java.io.Serializable;
-import java.util.List;
-import org.mxchange.jcontacts.model.contact.title.PersonalTitle;
-
-/**
- * An interface for gender and title (static data) beans
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public interface FinancialsGenderWebApplicationController extends Serializable {
-
-	/**
-	 * Getter for all genders as array
-	 * <p>
-	 * @return All genders as array
-	 */
-	PersonalTitle[] getAllGenders ();
-
-	/**
-	 * Getter for only selectable genders as array, UNKNOWN is not selectable
-	 * <p>
-	 * @return All genders as array
-	 */
-	List<PersonalTitle> getSelectableGenders ();
-
-}
diff --git a/src/java/org/mxchange/jfinancials/beans/helper/FinancialsWebViewHelperBean.java b/src/java/org/mxchange/jfinancials/beans/helper/FinancialsWebViewHelperBean.java
index 4e951dc6..da7826a3 100644
--- a/src/java/org/mxchange/jfinancials/beans/helper/FinancialsWebViewHelperBean.java
+++ b/src/java/org/mxchange/jfinancials/beans/helper/FinancialsWebViewHelperBean.java
@@ -456,7 +456,7 @@ public class FinancialsWebViewHelperBean extends BaseFinancialsBean implements F
 		// Is basic company data set?
 		if (basicData instanceof BasicData) {
 			// Short or long name?
-			if (useShortName) {
+			if (useShortName || basicData.getCompanyName() == null) {
 				// Add company's long name
 				sb.append(basicData.getCompanyShortName()); //NOI18N
 			} else {
diff --git a/src/java/org/mxchange/jfinancials/beans/localization/FinancialsLocalizationSessionBean.java b/src/java/org/mxchange/jfinancials/beans/localization/FinancialsLocalizationSessionBean.java
index 045fee19..7c91dd5d 100644
--- a/src/java/org/mxchange/jfinancials/beans/localization/FinancialsLocalizationSessionBean.java
+++ b/src/java/org/mxchange/jfinancials/beans/localization/FinancialsLocalizationSessionBean.java
@@ -182,7 +182,7 @@ public class FinancialsLocalizationSessionBean extends BaseFinancialsBean implem
 		// Has a matching locale
 		if (null == newLocale) {
 			// Throw NPE
-			throw new NullPointerException("this.localeCode=" + this.getLocaleCode() + " cannot be found."); //NOI18N
+			throw new NullPointerException(MessageFormat.format("this.localeCode={0} cannot be found.", this.getLocaleCode())); //NOI18N
 		}
 
 		// Then change it
@@ -193,7 +193,13 @@ public class FinancialsLocalizationSessionBean extends BaseFinancialsBean implem
 	}
 
 	@Override
-	public String formatCurrency (final Float amount) {
+	public String formatFloatNumber (final Float amount) {
+		// Is parameter valid?
+		if (null == amount) {
+			// Throw NPE
+			throw new NullPointerException("amount is null"); //NOI18N
+		}
+
 		// Format amount
 		return NUMBER_FORMAT.format(amount);
 	}
diff --git a/src/java/org/mxchange/jfinancials/beans/localization/FinancialsLocalizationSessionController.java b/src/java/org/mxchange/jfinancials/beans/localization/FinancialsLocalizationSessionController.java
index d845049f..3161cadc 100644
--- a/src/java/org/mxchange/jfinancials/beans/localization/FinancialsLocalizationSessionController.java
+++ b/src/java/org/mxchange/jfinancials/beans/localization/FinancialsLocalizationSessionController.java
@@ -33,7 +33,7 @@ public interface FinancialsLocalizationSessionController extends Serializable {
 	 * <p>
 	 * @return Formatted string
 	 */
-	String formatCurrency (final Float amount);
+	String formatFloatNumber (final Float amount);
 
 	/**
 	 * Getter for locale
diff --git a/src/java/org/mxchange/jfinancials/validator/emailaddress/FinancialsEmailAddressValidator.java b/src/java/org/mxchange/jfinancials/validator/emailaddress/FinancialsEmailAddressValidator.java
index cf1afcd4..a2fa5e2e 100644
--- a/src/java/org/mxchange/jfinancials/validator/emailaddress/FinancialsEmailAddressValidator.java
+++ b/src/java/org/mxchange/jfinancials/validator/emailaddress/FinancialsEmailAddressValidator.java
@@ -65,6 +65,7 @@ public class FinancialsEmailAddressValidator extends BaseStringValidator {
 	 * Default constructor
 	 */
 	public FinancialsEmailAddressValidator () {
+		// Set allowEmpty to FALSE by default
 		this.allowEmptyRequiredData = Boolean.FALSE;
 	}
 
@@ -79,6 +80,18 @@ public class FinancialsEmailAddressValidator extends BaseStringValidator {
 
 	@Override
 	public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
+		// Validate parameter
+		if (null == context) {
+			// Throw NPE
+			throw new NullPointerException("Parameter context is null"); //NOI18N
+		} else if (null == component) {
+			// Throw NPE again
+			throw new NullPointerException("Parameter component is null"); //NOI18N
+		} else if (null == this.allowEmptyRequiredData) {
+			// Should not be NULL
+			throw new IllegalStateException("this.allowEmptyRequiredData was set to null, this should not happen."); //NOI18N
+		}
+
 		// The required field
 		final String[] requiredFields = {"emailAddress", "emailAddressRepeat", "resendEmailAddress"}; //NOI18N
 
diff --git a/src/java/org/mxchange/jfinancials/validator/emailaddress/basicdata/FinancialsBasicDataEmailAddressValidator.java b/src/java/org/mxchange/jfinancials/validator/emailaddress/basicdata/FinancialsBasicDataEmailAddressValidator.java
index 12e000b8..218f2fd2 100644
--- a/src/java/org/mxchange/jfinancials/validator/emailaddress/basicdata/FinancialsBasicDataEmailAddressValidator.java
+++ b/src/java/org/mxchange/jfinancials/validator/emailaddress/basicdata/FinancialsBasicDataEmailAddressValidator.java
@@ -56,42 +56,27 @@ public class FinancialsBasicDataEmailAddressValidator extends BaseStringValidato
 	 */
 	private static final long serialVersionUID = 187_536_745_607_195L;
 
-	/**
-	 * Whether empty data is allowed
-	 */
-	private Boolean allowEmptyRequiredData;
-
-	/**
-	 * Default constructor
-	 */
-	public FinancialsBasicDataEmailAddressValidator () {
-		this.allowEmptyRequiredData = Boolean.FALSE;
-	}
-
-	/**
-	 * Setter for allowEmptyRequiredData flag
-	 * <p>
-	 * @param allowEmptyRequiredData Whether empty values are allowed
-	 */
-	public void setAllowEmptyRequiredData (final Boolean allowEmptyRequiredData) {
-		this.allowEmptyRequiredData = allowEmptyRequiredData;
-	}
-
 	@Override
 	public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
+		// Validate parameter
+		if (null == context) {
+			// Throw NPE
+			throw new NullPointerException("Parameter context is null"); //NOI18N
+		} else if (null == component) {
+			// Throw NPE again
+			throw new NullPointerException("Parameter component is null"); //NOI18N
+		}
+
 		// The required field
 		final String[] requiredFields = {"emailAddress", "emailAddressRepeat", "resendEmailAddress"}; //NOI18N
 
 		// Pre-validation (example: not null, not a string, empty string ...)
-		super.preValidate(context, component, value, requiredFields, this.allowEmptyRequiredData);
+		super.preValidate(context, component, value, requiredFields, Boolean.TRUE);
 
 		// Is the email address empty and allowed?
-		if (null == value && this.allowEmptyRequiredData) {
+		if (null == value) {
 			// Then accept this here
 			return;
-		} else if (null == value) {
-			// Abort here
-			throw new ValidatorException(new FacesMessage("No empty email address allowed.")); //NOI18N
 		}
 
 		// Get string from object ... ;-)
diff --git a/src/java/org/mxchange/jfinancials/validator/emailaddress/branchoffice/FinancialsBranchOfficeEmailAddressValidator.java b/src/java/org/mxchange/jfinancials/validator/emailaddress/branchoffice/FinancialsBranchOfficeEmailAddressValidator.java
index 0af46cee..46e5d597 100644
--- a/src/java/org/mxchange/jfinancials/validator/emailaddress/branchoffice/FinancialsBranchOfficeEmailAddressValidator.java
+++ b/src/java/org/mxchange/jfinancials/validator/emailaddress/branchoffice/FinancialsBranchOfficeEmailAddressValidator.java
@@ -56,42 +56,27 @@ public class FinancialsBranchOfficeEmailAddressValidator extends BaseStringValid
 	 */
 	private static final long serialVersionUID = 187_536_745_607_195L;
 
-	/**
-	 * Whether empty data is allowed
-	 */
-	private Boolean allowEmptyRequiredData;
-
-	/**
-	 * Default constructor
-	 */
-	public FinancialsBranchOfficeEmailAddressValidator () {
-		this.allowEmptyRequiredData = Boolean.FALSE;
-	}
-
-	/**
-	 * Setter for allowEmptyRequiredData flag
-	 * <p>
-	 * @param allowEmptyRequiredData Whether empty values are allowed
-	 */
-	public void setAllowEmptyRequiredData (final Boolean allowEmptyRequiredData) {
-		this.allowEmptyRequiredData = allowEmptyRequiredData;
-	}
-
 	@Override
 	public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
+		// Validate parameter
+		if (null == context) {
+			// Throw NPE
+			throw new NullPointerException("Parameter context is null"); //NOI18N
+		} else if (null == component) {
+			// Throw NPE again
+			throw new NullPointerException("Parameter component is null"); //NOI18N
+		}
+
 		// The required field
 		final String[] requiredFields = {"emailAddress", "emailAddressRepeat", "resendEmailAddress"}; //NOI18N
 
 		// Pre-validation (example: not null, not a string, empty string ...)
-		super.preValidate(context, component, value, requiredFields, this.allowEmptyRequiredData);
+		super.preValidate(context, component, value, requiredFields, Boolean.TRUE);
 
-		// Is the email address empty and allowed?
-		if (null == value && this.allowEmptyRequiredData) {
+		// Is the email address empty?
+		if (null == value) {
 			// Then accept this here
 			return;
-		} else if (null == value) {
-			// Abort here
-			throw new ValidatorException(new FacesMessage("No empty email address allowed.")); //NOI18N
 		}
 
 		// Get string from object ... ;-)
diff --git a/src/java/org/mxchange/jfinancials/validator/emailaddress/employee/FinancialsEmployeeEmailAddressValidator.java b/src/java/org/mxchange/jfinancials/validator/emailaddress/employee/FinancialsEmployeeEmailAddressValidator.java
index 533380b7..b0503501 100644
--- a/src/java/org/mxchange/jfinancials/validator/emailaddress/employee/FinancialsEmployeeEmailAddressValidator.java
+++ b/src/java/org/mxchange/jfinancials/validator/emailaddress/employee/FinancialsEmployeeEmailAddressValidator.java
@@ -56,42 +56,27 @@ public class FinancialsEmployeeEmailAddressValidator extends BaseStringValidator
 	 */
 	private static final long serialVersionUID = 187_536_745_607_196L;
 
-	/**
-	 * Whether empty data is allowed
-	 */
-	private Boolean allowEmptyRequiredData;
-
-	/**
-	 * Default constructor
-	 */
-	public FinancialsEmployeeEmailAddressValidator () {
-		this.allowEmptyRequiredData = Boolean.FALSE;
-	}
-
-	/**
-	 * Setter for allowEmptyRequiredData flag
-	 * <p>
-	 * @param allowEmptyRequiredData Whether empty values are allowed
-	 */
-	public void setAllowEmptyRequiredData (final Boolean allowEmptyRequiredData) {
-		this.allowEmptyRequiredData = allowEmptyRequiredData;
-	}
-
 	@Override
 	public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
+		// Validate parameter
+		if (null == context) {
+			// Throw NPE
+			throw new NullPointerException("Parameter context is null"); //NOI18N
+		} else if (null == component) {
+			// Throw NPE again
+			throw new NullPointerException("Parameter component is null"); //NOI18N
+		}
+
 		// The required field
 		final String[] requiredFields = {"employeeEmailAddress"}; //NOI18N
 
 		// Pre-validation (example: not null, not a string, empty string ...)
-		super.preValidate(context, component, value, requiredFields, this.allowEmptyRequiredData);
+		super.preValidate(context, component, value, requiredFields, Boolean.TRUE);
 
 		// Is the email address empty and allowed?
-		if (null == value && this.allowEmptyRequiredData) {
+		if (null == value) {
 			// Then accept this here
 			return;
-		} else if (null == value) {
-			// Abort here
-			throw new ValidatorException(new FacesMessage("No empty email address allowed.")); //NOI18N
 		}
 
 		// Get string from object ... ;-)
diff --git a/src/java/org/mxchange/jfinancials/validator/emailaddress/headquarter/FinancialsHeadquarterEmailAddressValidator.java b/src/java/org/mxchange/jfinancials/validator/emailaddress/headquarter/FinancialsHeadquarterEmailAddressValidator.java
index 7da59a89..4423acab 100644
--- a/src/java/org/mxchange/jfinancials/validator/emailaddress/headquarter/FinancialsHeadquarterEmailAddressValidator.java
+++ b/src/java/org/mxchange/jfinancials/validator/emailaddress/headquarter/FinancialsHeadquarterEmailAddressValidator.java
@@ -56,43 +56,27 @@ public class FinancialsHeadquarterEmailAddressValidator extends BaseStringValida
 	 */
 	private static final long serialVersionUID = 187_536_745_607_194L;
 
-	/**
-	 * Whether empty data is allowed
-	 */
-	private Boolean allowEmptyRequiredData;
-
-	/**
-	 * Default constructor
-	 */
-	public FinancialsHeadquarterEmailAddressValidator () {
-		// Default is not allowed
-		this.allowEmptyRequiredData = Boolean.FALSE;
-	}
-
-	/**
-	 * Setter for allowEmptyRequiredData flag
-	 * <p>
-	 * @param allowEmptyRequiredData Whether empty values are allowed
-	 */
-	public void setAllowEmptyRequiredData (final Boolean allowEmptyRequiredData) {
-		this.allowEmptyRequiredData = allowEmptyRequiredData;
-	}
-
 	@Override
 	public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
+		// Validate parameter
+		if (null == context) {
+			// Throw NPE
+			throw new NullPointerException("Parameter context is null"); //NOI18N
+		} else if (null == component) {
+			// Throw NPE again
+			throw new NullPointerException("Parameter component is null"); //NOI18N
+		}
+
 		// The required field
 		final String[] requiredFields = {"emailAddress", "emailAddressRepeat", "resendEmailAddress"}; //NOI18N
 
 		// Pre-validation (example: not null, not a string, empty string ...)
-		super.preValidate(context, component, value, requiredFields, this.allowEmptyRequiredData);
+		super.preValidate(context, component, value, requiredFields, Boolean.TRUE);
 
 		// Is the email address empty and allowed?
-		if (null == value && this.allowEmptyRequiredData) {
+		if (null == value) {
 			// Then accept this here
 			return;
-		} else if (null == value) {
-			// Abort here
-			throw new ValidatorException(new FacesMessage("No empty email address allowed.")); //NOI18N
 		}
 
 		// Get string from object ... ;-)
diff --git a/src/java/org/mxchange/localization/generic_de_DE.properties b/src/java/org/mxchange/localization/generic_de_DE.properties
index 416ad8c3..c73e11e3 100644
--- a/src/java/org/mxchange/localization/generic_de_DE.properties
+++ b/src/java/org/mxchange/localization/generic_de_DE.properties
@@ -135,6 +135,7 @@ COUNTRY_GREECE=Griechenland
 COUNTRY_ITALIA=Italien
 COUNTRY_NETHERLANDS=Niederlande
 COUNTRY_PHILIPPINES=Philippinen
+COUNTRY_POLAND=Polen
 COUNTRY_SWEDEN=Schweden
 COUNTRY_TURKEY=T\u00fcrkei
 COUNTRY_THAILAND=Thailand
@@ -560,7 +561,7 @@ ADMIN_COUNTRY_PHONE_CODE_REQUIRED=Bitte geben Sie die Vorwahl dieses Landes ein
 ADMIN_COUNTRY_EXTERNAL_DIAL_PREFIX_REQUIRED=Bitte geben Sie die Vorwahl f\u00fcr Gespr\u00e4che ausserhalb des Ortes ein (meistens 0).
 ADMIN_COUNTRY_I18N_KEY_REQUIRED=Bitte geben Sie den Schl\u00fcssel f\u00fcr das Sprachpaket ein (z.B. COUNTRY_GERMANY f\u00fcr Deutschland).
 ADMIN_COUNTRY_CODE_REQUIRED=Bitte geben Sie den L\u00e4ndercode ein (z.B. DE f\u00fcr Deutschland).
-ADMIN_COUNTRY_ABORAD_DIAL_PREFIX_REQUIRED=Bitte geben Sie die Vorwahl f\u00fcr Auslandsgespr\u00e4che ein (z.B. + oder 00).
+ADMIN_COUNTRY_ABROAD_DIAL_PREFIX_REQUIRED=Bitte geben Sie die Vorwahl f\u00fcr Auslandsgespr\u00e4che ein (z.B. + oder 00).
 ADMIN_MOBILE_PROVIDER_DIAL_PREFIX_REQUIRED=Bitte geben Sie die Vorwahl ohne f\u00fchrende Null f\u00fcr den Mobilfunkanbieter ein (z.B. 177 f\u00fcr E+).
 USER_LOGIN_MUST_CHANGE_PASSWORD=Sie m\u00fcssen Ihr Passwort \u00e4ndern. Dies darf nicht mit dem aktuellen \u00fcbereinstimmen.
 ADMIN_LOGOUT_TITLE=Aus dem Administrationsbereich ausloggen
diff --git a/src/java/org/mxchange/localization/generic_en_US.properties b/src/java/org/mxchange/localization/generic_en_US.properties
index df5ff6b3..b400860a 100644
--- a/src/java/org/mxchange/localization/generic_en_US.properties
+++ b/src/java/org/mxchange/localization/generic_en_US.properties
@@ -135,6 +135,7 @@ COUNTRY_GREECE=Greece
 COUNTRY_ITALIA=Italia
 COUNTRY_NETHERLANDS=Netherlands
 COUNTRY_PHILIPPINES=Philippines
+COUNTRY_POLAND=Poland
 COUNTRY_SWEDEN=Sweden
 COUNTRY_THAILAND=Thailand
 COUNTRY_TURKEY=Turkey
@@ -549,7 +550,7 @@ ADMIN_COUNTRY_PHONE_CODE_REQUIRED=Please enter dial prefix for this country (e.g
 ADMIN_COUNTRY_EXTERNAL_DIAL_PREFIX_REQUIRED=Please enter dial prefix for calls outside the current city.
 ADMIN_COUNTRY_I18N_KEY_REQUIRED=Please enter the key for the language package (e.g. COUNTRY_USA for U.S.A.).
 ADMIN_COUNTRY_CODE_REQUIRED=Please enter country code (e.g. US for U.S.A.).
-ADMIN_COUNTRY_ABORAD_DIAL_PREFIX_REQUIRED=Please enter dial prefix for abroad calls (e.g. + or 00).
+ADMIN_COUNTRY_ABROAD_DIAL_PREFIX_REQUIRED=Please enter dial prefix for abroad calls (e.g. + or 00).
 ADMIN_MOBILE_PROVIDER_DIAL_PREFIX_REQUIRED=Please enter dial prefix for mobile provider.
 USER_LOGIN_MUST_CHANGE_PASSWORD=Please change your password. It must not match with your current one.
 ADMIN_LOGOUT_TITLE=Logout from administration area
diff --git a/web/WEB-INF/faces-config.xml b/web/WEB-INF/faces-config.xml
index fcfc700c..e611b432 100644
--- a/web/WEB-INF/faces-config.xml
+++ b/web/WEB-INF/faces-config.xml
@@ -777,8 +777,8 @@
 			<to-view-id>/admin/basic_data/admin_basic_data_assign_owner.xhtml</to-view-id>
 		</navigation-case>
 		<navigation-case>
-			<from-outcome>admin_show_contact</from-outcome>
-			<to-view-id>/admin/contact/admin_contact_show.xhtml</to-view-id>
+			<from-outcome>admin_show_employee</from-outcome>
+			<to-view-id>/admin/employee/admin_employee_show.xhtml</to-view-id>
 		</navigation-case>
 		<navigation-case>
 			<from-outcome>admin_assign_basic_data_employee</from-outcome>
diff --git a/web/WEB-INF/resources/tags/admin/form_data/contact/admin_form_contact_data.tpl b/web/WEB-INF/resources/tags/admin/form_data/contact/admin_form_contact_data.tpl
deleted file mode 100644
index 769aef85..00000000
--- a/web/WEB-INF/resources/tags/admin/form_data/contact/admin_form_contact_data.tpl
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<ui:composition
-	xmlns="http://www.w3.org/1999/xhtml"
-	xmlns:core="http://mxchange.org/jsf/core/widgets"
-	xmlns:validator="http://mxchange.org/jsf/core/validators"
-	xmlns:f="http://xmlns.jcp.org/jsf/core"
-	xmlns:h="http://xmlns.jcp.org/jsf/html"
-	xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
-	xmlns:p="http://primefaces.org/ui"
-	>
-	<p:fieldset
-		legend="#{msg.ADMIN_CONTACT_PERSONAL_DATA_LEGEND}"
-		title="#{msg.ADMIN_CONTACT_PERSONAL_DATA_LEGEND_TITLE}"
-		rendered="#{empty rendered or rendered}"
-		>
-		<p:panelGrid
-			layout="grid"
-			columns="2"
-			columnClasses="ui-grid-col-4,ui-grid-col-8"
-			styleClass="ui-noborder"
-			>
-			<p:outputLabel for="personalTitle" value="#{msg.ADMIN_CONTACT_PERSONAL_TITLE}" />
-			<core:outputPersonalTitleSelectionBox targetController="#{adminContactController}" allowEmptyRequiredData="#{allowEmptyRequiredData}" />
-
-			<p:outputLabel for="firstName" value="#{msg.ADMIN_PERSONAL_DATA_FIRST_NAME}" />
-			<p:inputText
-				id="firstName"
-				size="10"
-				maxlength="255"
-				value="#{adminContactController.firstName}"
-				required="#{empty allowEmptyRequiredData or not allowEmptyRequiredData}"
-				requiredMessage="#{msg.ADMIN_CONTACT_DATA_FIRST_NAME_REQUIRED}"
-				/>
-
-			<p:outputLabel for="title" value="#{msg.ADMIN_PERSONAL_DATA_TITLE}" />
-			<p:inputText
-				id="title"
-				size="5"
-				maxlength="255"
-				value="#{adminContactController.academicTitle}"
-				/>
-
-			<p:outputLabel for="familyName" value="#{msg.ADMIN_PERSONAL_DATA_FAMILY_NAME}" />
-			<p:inputText
-				id="familyName"
-				size="10"
-				maxlength="255"
-				value="#{adminContactController.familyName}"
-				required="#{empty allowEmptyRequiredData or not allowEmptyRequiredData}"
-				requiredMessage="#{msg.ADMIN_CONTACT_DATA_FAMILY_NAME_REQUIRED}"
-				/>
-
-			<p:outputLabel for="street" value="#{msg.ADMIN_DATA_STREET_NAME}" />
-			<p:inputText
-				id="street"
-				size="20"
-				maxlength="255"
-				value="#{adminContactController.street}"
-				/>
-
-			<p:outputLabel for="houseNumber" value="#{msg.ADMIN_DATA_HOUSE_NUMBER}" />
-			<p:inputText
-				id="houseNumber"
-				size="3"
-				maxlength="5"
-				value="#{adminContactController.houseNumber}"
-				validatorMessage="#{msg.ENTERED_HOUSE_NUMBER_INVALID}"
-				>
-				<f:validateLongRange minimum="1" maximum="500" />
-			</p:inputText>
-
-			<p:outputLabel for="houseNumberExtension" value="#{msg.ADMIN_DATA_HOUSE_NUMBER_EXTENSION}" />
-			<p:inputText id="houseNumberExtension" size="2" maxlength="2" value="#{adminContactController.houseNumberExtension}" />
-
-			<p:outputLabel for="zipCode" value="#{msg.DATA_ZIP_CODE}" />
-			<p:inputText id="zipCode" size="5" maxlength="6" value="#{adminContactController.zipCode}" validatorMessage="#{msg.ENTERED_ZIP_CODE_INVALID}">
-				<f:validateLongRange minimum="1" maximum="99999" />
-			</p:inputText>
-
-			<p:outputLabel for="city" value="#{msg.ADMIN_DATA_CITY}" />
-			<p:inputText id="city" size="10" maxlength="255" value="#{adminContactController.city}" />
-
-			<p:outputLabel for="country" value="#{msg.ADMIN_SELECT_COUNTRY}" />
-			<core:outputCountrySelector
-				id="country"
-				value="#{adminContactController.contactCountry}"
-				required="#{empty allowEmptyRequiredData or not allowEmptyRequiredData}"
-				requiredMessage="#{msg.ADMIN_SELECT_CONTACT_COUNTRY_REQUIRED}"
-				/>
-
-			<p:outputLabel for="landLineCountry" value="#{msg.ADMIN_PERSONAL_DATA_PHONE_NUMBER}" />
-			<core:inputLandLineNumberPanelGrid targetController="#{adminContactController}" />
-
-			<p:outputLabel for="faxCountry" value="#{msg.ADMIN_PERSONAL_DATA_FAX_NUMBER}" />
-			<core:inputFaxNumberPanelGrid targetController="#{adminContactController}" />
-
-			<p:outputLabel for="mobileNumber" value="#{msg.ADMIN_PERSONAL_DATA_MOBILE_NUMBER}" />
-			<core:inputMobileNumberPanelGrid targetController="#{adminContactController}" />
-
-			<p:outputLabel for="emailAddress" value="#{msg.DATA_EMAIL_ADDRESS}" />
-			<p:inputText id="emailAddress" size="20" maxlength="255" value="#{adminContactController.emailAddress}" validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}">
-				<validator:emailAddressValidator allowEmptyRequiredData="#{allowEmptyRequiredData}" />
-			</p:inputText>
-
-			<p:outputLabel for="contactBirthday" value="#{msg.ADMIN_PERSONAL_DATA_BIRTHDAY}" />
-			<p:calendar
-				id="contactBirthday"
-				value="#{contactController.birthday}"
-				title="#{msg.ADMIN_PERSONAL_DATA_BIRTHDAY_TITLE}"
-				pattern="#{msg.DATE_PATTERN}"
-				navigator="true"
-				/>
-
-			<p:outputLabel for="contactComment" value="#{msg.ADMIN_PERSONAL_DATA_COMMENT}" />
-			<p:inputTextarea id="contactComment" value="#{adminContactController.comment}" rows="7" cols="35" />
-		</p:panelGrid>
-	</p:fieldset>
-
-	<h:panelGroup styleClass="para notice" layout="block">
-		<ul>
-			<li>
-				<h:outputText value="#{msg.ADMIN_CONTACT_DATA_EMAIL_ADDRESS_NOTICE}" />
-			</li>
-		</ul>
-	</h:panelGroup>
-</ui:composition>
diff --git a/web/WEB-INF/resources/tags/input/selection_box/personal_title_selection_box.tpl b/web/WEB-INF/resources/tags/input/selection_box/personal_title_selection_box.tpl
index 8731f8cc..5185f534 100644
--- a/web/WEB-INF/resources/tags/input/selection_box/personal_title_selection_box.tpl
+++ b/web/WEB-INF/resources/tags/input/selection_box/personal_title_selection_box.tpl
@@ -9,13 +9,12 @@
 	<p:selectOneRadio
 		id="personalTitle"
 		value="#{targetController.personalTitle}"
-		required="#{(empty allowEmptyRequiredData or not allowEmptyRequiredData) and featureController.isFeatureEnabled(targetController.controllerType.concat('_personal_title'))}"
+		required="true"
 		requiredMessage="#{msg.FIELD_PERSONAL_TITLE_REQUIRED}"
-		rendered="#{empty rendered or rendered == true}"
 		>
 
 		<f:selectItems
-			value="#{genderController.selectableGenders}"
+			value="#{dataController.personalTitles}"
 			var="personalTitle"
 			itemValue="#{personalTitle}"
 			itemLabel="#{msg[personalTitle.messageKey]}"
diff --git a/web/WEB-INF/templates/admin/branch_office/admin_form_branch_office_data.tpl b/web/WEB-INF/templates/admin/branch_office/admin_form_branch_office_data.tpl
index 2864d093..2e16c29d 100644
--- a/web/WEB-INF/templates/admin/branch_office/admin_form_branch_office_data.tpl
+++ b/web/WEB-INF/templates/admin/branch_office/admin_form_branch_office_data.tpl
@@ -108,7 +108,7 @@
 				value="#{adminBranchOfficeActionController.branchEmailAddress}"
 				validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}"
 				>
-				<validator:branchOfficeEmailAddressValidator allowEmptyRequiredData="true" />
+				<validator:branchOfficeEmailAddressValidator />
 			</p:inputText>
 
 			<p:outputLabel for="landLineCountry" value="#{msg.ADMIN_ENTER_BRANCH_OFFICE_LAND_LINE_NUMBER}" />
diff --git a/web/WEB-INF/templates/admin/contact/admin_form_contact_data.tpl b/web/WEB-INF/templates/admin/contact/admin_form_contact_data.tpl
new file mode 100644
index 00000000..568fcf76
--- /dev/null
+++ b/web/WEB-INF/templates/admin/contact/admin_form_contact_data.tpl
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ui:composition
+	xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:core="http://mxchange.org/jsf/core/widgets"
+	xmlns:validator="http://mxchange.org/jsf/core/validators"
+	xmlns:f="http://xmlns.jcp.org/jsf/core"
+	xmlns:h="http://xmlns.jcp.org/jsf/html"
+	xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+	xmlns:p="http://primefaces.org/ui"
+	>
+	<p:fieldset
+		legend="#{msg.ADMIN_CONTACT_PERSONAL_DATA_LEGEND}"
+		title="#{msg.ADMIN_CONTACT_PERSONAL_DATA_LEGEND_TITLE}"
+		>
+		<p:panelGrid
+			layout="grid"
+			columns="2"
+			columnClasses="ui-grid-col-4,ui-grid-col-8"
+			styleClass="ui-noborder"
+			>
+			<p:outputLabel for="personalTitle" value="#{msg.ADMIN_CONTACT_PERSONAL_TITLE}" />
+			<core:outputPersonalTitleSelectionBox targetController="#{adminContactController}" />
+
+			<p:outputLabel for="firstName" value="#{msg.ADMIN_PERSONAL_DATA_FIRST_NAME}" />
+			<p:inputText
+				id="firstName"
+				size="10"
+				maxlength="255"
+				value="#{adminContactController.firstName}"
+				required="true"
+				requiredMessage="#{msg.ADMIN_CONTACT_DATA_FIRST_NAME_REQUIRED}"
+				/>
+
+			<p:outputLabel for="title" value="#{msg.ADMIN_PERSONAL_DATA_TITLE}" />
+			<p:inputText
+				id="title"
+				size="5"
+				maxlength="255"
+				value="#{adminContactController.academicTitle}"
+				/>
+
+			<p:outputLabel for="familyName" value="#{msg.ADMIN_PERSONAL_DATA_FAMILY_NAME}" />
+			<p:inputText
+				id="familyName"
+				size="10"
+				maxlength="255"
+				value="#{adminContactController.familyName}"
+				required="true"
+				requiredMessage="#{msg.ADMIN_CONTACT_DATA_FAMILY_NAME_REQUIRED}"
+				/>
+
+			<p:outputLabel for="street" value="#{msg.ADMIN_DATA_STREET_NAME}" />
+			<p:inputText
+				id="street"
+				size="20"
+				maxlength="255"
+				value="#{adminContactController.street}"
+				/>
+
+			<p:outputLabel for="houseNumber" value="#{msg.ADMIN_DATA_HOUSE_NUMBER}" />
+			<p:inputText
+				id="houseNumber"
+				size="3"
+				maxlength="5"
+				value="#{adminContactController.houseNumber}"
+				validatorMessage="#{msg.ENTERED_HOUSE_NUMBER_INVALID}"
+				>
+				<f:validateLongRange minimum="1" maximum="500" />
+			</p:inputText>
+
+			<p:outputLabel for="houseNumberExtension" value="#{msg.ADMIN_DATA_HOUSE_NUMBER_EXTENSION}" />
+			<p:inputText id="houseNumberExtension" size="2" maxlength="2" value="#{adminContactController.houseNumberExtension}" />
+
+			<p:outputLabel for="zipCode" value="#{msg.DATA_ZIP_CODE}" />
+			<p:inputText id="zipCode" size="5" maxlength="6" value="#{adminContactController.zipCode}" validatorMessage="#{msg.ENTERED_ZIP_CODE_INVALID}">
+				<f:validateLongRange minimum="1" maximum="99999" />
+			</p:inputText>
+
+			<p:outputLabel for="city" value="#{msg.ADMIN_DATA_CITY}" />
+			<p:inputText id="city" size="10" maxlength="255" value="#{adminContactController.city}" />
+
+			<p:outputLabel for="country" value="#{msg.ADMIN_SELECT_COUNTRY}" />
+			<core:outputCountrySelector
+				id="country"
+				value="#{adminContactController.contactCountry}"
+				required="true"
+				requiredMessage="#{msg.ADMIN_SELECT_CONTACT_COUNTRY_REQUIRED}"
+				/>
+
+			<p:outputLabel for="landLineCountry" value="#{msg.ADMIN_PERSONAL_DATA_PHONE_NUMBER}" />
+			<core:inputLandLineNumberPanelGrid targetController="#{adminContactController}" />
+
+			<p:outputLabel for="faxCountry" value="#{msg.ADMIN_PERSONAL_DATA_FAX_NUMBER}" />
+			<core:inputFaxNumberPanelGrid targetController="#{adminContactController}" />
+
+			<p:outputLabel for="mobileNumber" value="#{msg.ADMIN_PERSONAL_DATA_MOBILE_NUMBER}" />
+			<core:inputMobileNumberPanelGrid targetController="#{adminContactController}" />
+
+			<p:outputLabel for="emailAddress" value="#{msg.DATA_EMAIL_ADDRESS}" />
+			<p:inputText id="emailAddress" size="20" maxlength="255" value="#{adminContactController.emailAddress}" validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}">
+				<validator:emailAddressValidator allowEmptyRequiredData="true" />
+			</p:inputText>
+
+			<p:outputLabel for="contactBirthday" value="#{msg.ADMIN_PERSONAL_DATA_BIRTHDAY}" />
+			<p:calendar
+				id="contactBirthday"
+				value="#{contactController.birthday}"
+				title="#{msg.ADMIN_PERSONAL_DATA_BIRTHDAY_TITLE}"
+				pattern="#{msg.DATE_PATTERN}"
+				navigator="true"
+				/>
+
+			<p:outputLabel for="contactComment" value="#{msg.ADMIN_PERSONAL_DATA_COMMENT}" />
+			<p:inputTextarea id="contactComment" value="#{adminContactController.comment}" rows="7" cols="35" />
+		</p:panelGrid>
+	</p:fieldset>
+
+	<h:panelGroup styleClass="para notice" layout="block">
+		<ul>
+			<li>
+				<h:outputText value="#{msg.ADMIN_CONTACT_DATA_EMAIL_ADDRESS_NOTICE}" />
+			</li>
+		</ul>
+	</h:panelGroup>
+</ui:composition>
diff --git a/web/WEB-INF/templates/admin/country/admin_form_country_data.tpl b/web/WEB-INF/templates/admin/country/admin_form_country_data.tpl
index 5ba60c7f..8cf9e48d 100644
--- a/web/WEB-INF/templates/admin/country/admin_form_country_data.tpl
+++ b/web/WEB-INF/templates/admin/country/admin_form_country_data.tpl
@@ -23,7 +23,14 @@
 				</div>
 
 				<div class="table-right-medium">
-					<p:inputText id="countryAbroadDialPrefix" size="2" maxlength="10" value="#{adminCountryController.countryAbroadDialPrefix}" required="true" requiredMessage="#{msg.ADMIN_COUNTRY_ABORAD_DIAL_PREFIX_REQUIRED}">
+					<p:inputText
+						id="countryAbroadDialPrefix"
+						size="2"
+						maxlength="10"
+						value="#{adminCountryController.countryAbroadDialPrefix}"
+						required="true"
+						requiredMessage="#{msg.ADMIN_COUNTRY_ABROAD_DIAL_PREFIX_REQUIRED}"
+						>
 						<f:validator validatorId="AbroadDialValidator" />
 					</p:inputText>
 				</div>
diff --git a/web/WEB-INF/templates/admin/employee/admin_form_employee_data.tpl b/web/WEB-INF/templates/admin/employee/admin_form_employee_data.tpl
index 47c59420..9d9dede6 100644
--- a/web/WEB-INF/templates/admin/employee/admin_form_employee_data.tpl
+++ b/web/WEB-INF/templates/admin/employee/admin_form_employee_data.tpl
@@ -113,7 +113,7 @@
 				value="#{adminEmployeeController.employeeEmailAddress}"
 				validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}"
 				>
-				<validator:employeeEmailAddressValidator allowEmptyRequiredData="true" />
+				<validator:employeeEmailAddressValidator />
 			</p:inputText>
 
 			<p:outputLabel for="employeeStaffNumber" value="#{msg.ADMIN_ENTER_EMPLOYEE_STAFF_NUMBER}" />
diff --git a/web/WEB-INF/templates/admin/headquarter/admin_form_headquarter.tpl b/web/WEB-INF/templates/admin/headquarter/admin_form_headquarter.tpl
index 39970174..3b54506d 100644
--- a/web/WEB-INF/templates/admin/headquarter/admin_form_headquarter.tpl
+++ b/web/WEB-INF/templates/admin/headquarter/admin_form_headquarter.tpl
@@ -79,7 +79,7 @@
 				value="#{adminHeadquarterActionController.headquarterEmailAddress}"
 				validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}"
 				>
-				<validator:headquarterEmailAddressValidator allowEmptyRequiredData="true" />
+				<validator:headquarterEmailAddressValidator />
 			</p:inputText>
 
 			<p:outputLabel for="landLineCountry" value="#{msg.ADMIN_ENTER_HEADQUARTER_LAND_LINE_NUMBER}" />
diff --git a/web/WEB-INF/validators.jsf.taglib.xml b/web/WEB-INF/validators.jsf.taglib.xml
index b50b5526..7d4fb532 100644
--- a/web/WEB-INF/validators.jsf.taglib.xml
+++ b/web/WEB-INF/validators.jsf.taglib.xml
@@ -39,48 +39,24 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 		<validator>
 			<validator-id>BasicDataEmailAddressValidator</validator-id>
 		</validator>
-		<attribute>
-			<description>Whether email address is allowed to be empty.</description>
-			<name>allowEmptyRequiredData</name>
-			<type>java.lang.Boolean</type>
-			<required>false</required>
-		</attribute>
 	</tag>
 	<tag>
 		<tag-name>branchOfficeEmailAddressValidator</tag-name>
 		<validator>
 			<validator-id>BranchOfficeEmailAddressValidator</validator-id>
 		</validator>
-		<attribute>
-			<description>Whether email address is allowed to be empty.</description>
-			<name>allowEmptyRequiredData</name>
-			<type>java.lang.Boolean</type>
-			<required>false</required>
-		</attribute>
 	</tag>
 	<tag>
 		<tag-name>employeeEmailAddressValidator</tag-name>
 		<validator>
 			<validator-id>EmployeeEmailAddressValidator</validator-id>
 		</validator>
-		<attribute>
-			<description>Whether email address is allowed to be empty.</description>
-			<name>allowEmptyRequiredData</name>
-			<type>java.lang.Boolean</type>
-			<required>false</required>
-		</attribute>
 	</tag>
 	<tag>
 		<tag-name>headquarterEmailAddressValidator</tag-name>
 		<validator>
 			<validator-id>HeadquarterEmailAddressValidator</validator-id>
 		</validator>
-		<attribute>
-			<description>Whether email address is allowed to be empty.</description>
-			<name>allowEmptyRequiredData</name>
-			<type>java.lang.Boolean</type>
-			<required>false</required>
-		</attribute>
 	</tag>
 	<tag>
 		<tag-name>urlValidator</tag-name>
diff --git a/web/WEB-INF/widgets.jsf.taglib.xml b/web/WEB-INF/widgets.jsf.taglib.xml
index baca3b3f..02787064 100644
--- a/web/WEB-INF/widgets.jsf.taglib.xml
+++ b/web/WEB-INF/widgets.jsf.taglib.xml
@@ -66,18 +66,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 		<tag-name>outputPersonalTitleSelectionBox</tag-name>
 		<description>This tag renders a selection box for user contact's personal title (Mr./Mrs.).</description>
 		<source>resources/tags/input/selection_box/personal_title_selection_box.tpl</source>
-		<attribute>
-			<name>allowEmptyRequiredData</name>
-			<description>Whether allow the personal title to be left empty. This might be the case when you create a user and want to select a contact from a selection box. EL code resolving to a boolean may be allowed here.</description>
-			<required>false</required>
-			<type>java.lang.Boolean</type>
-		</attribute>
-		<attribute>
-			<name>rendered</name>
-			<description>Whether this tag is being rendered by JSF engine (default: true).</description>
-			<required>false</required>
-			<type>java.lang.Boolean</type>
-		</attribute>
 		<attribute>
 			<name>targetController</name>
 			<description>A target backing bean (EL code resolving into it) extending at least BaseFacesBean where to set the data in.</description>
@@ -86,23 +74,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 			<type>org.mxchange.jcoreee.bean.faces.BaseFacesBean</type>
 		</attribute>
 	</tag>
-	<tag>
-		<tag-name>outputAdminContactDataFormFields</tag-name>
-		<description>This tag renders a fieldset for administrative purposes of contact data.</description>
-		<source>resources/tags/admin/form_data/contact/admin_form_contact_data.tpl</source>
-		<attribute>
-			<name>allowEmptyRequiredData</name>
-			<description>Whether allow the personal title to be left empty. This might be the case when you create a user and want to select a contact from a selection box. EL code resolving to a boolean may be allowed here.</description>
-			<required>false</required>
-			<type>java.lang.Boolean</type>
-		</attribute>
-		<attribute>
-			<name>rendered</name>
-			<description>Whether this tag is being rendered by JSF engine (default: true).</description>
-			<required>false</required>
-			<type>java.lang.Boolean</type>
-		</attribute>
-	</tag>
 	<tag>
 		<tag-name>outputAdminFaxDataFormFields</tag-name>
 		<description>This tag renders a fieldset for administrative purposes of fax data.</description>
diff --git a/web/admin/basic_data/admin_basic_data_list.xhtml b/web/admin/basic_data/admin_basic_data_list.xhtml
index 606fc527..e6f5114c 100644
--- a/web/admin/basic_data/admin_basic_data_list.xhtml
+++ b/web/admin/basic_data/admin_basic_data_list.xhtml
@@ -444,7 +444,7 @@
 								value="#{adminBasicCompanyDataController.companyEmailAddress}"
 								validatorMessage="#{msg.ENTERED_EMAIL_ADDRESS_IS_INVALID}"
 								>
-								<validator:basicDataEmailAddressValidator allowEmptyRequiredData="true" />
+								<validator:basicDataEmailAddressValidator />
 							</p:inputText>
 
 							<p:outputLabel for="companyLogo" value="#{msg.ADMIN_SELECT_BASIC_DATA_COMPANY_LOGO}" />
diff --git a/web/admin/contact/admin_contact_edit.xhtml b/web/admin/contact/admin_contact_edit.xhtml
index d2b697b8..0dc8a1a3 100644
--- a/web/admin/contact/admin_contact_edit.xhtml
+++ b/web/admin/contact/admin_contact_edit.xhtml
@@ -46,7 +46,7 @@
 					<h:outputText value="#{msg.ADMIN_CONTACT_PERSONAL_DATA_MINIMUM_NOTICE}" />
 				</div>
 
-				<core:outputAdminContactDataFormFields allowEmptyRequiredData="true" />
+				<ui:include src="/WEB-INF/templates/admin/contact/admin_form_contact_data.tpl" />
 
 				<p:panelGrid columns="2" layout="grid">
 					<p:commandButton
diff --git a/web/admin/contact/admin_contact_list.xhtml b/web/admin/contact/admin_contact_list.xhtml
index 2510aaec..cc23c119 100644
--- a/web/admin/contact/admin_contact_list.xhtml
+++ b/web/admin/contact/admin_contact_list.xhtml
@@ -235,7 +235,7 @@
 
 				<h:outputText value="#{msg.ADMIN_ADD_CONTACT_MINIMUM_DATA}" />
 
-				<core:outputAdminContactDataFormFields allowEmptyRequiredData="true" />
+				<ui:include src="/WEB-INF/templates/admin/contact/admin_form_contact_data.tpl" />
 
 				<f:facet name="footer">
 					<p:panelGrid columns="2" layout="grid">
diff --git a/web/admin/user/admin_user_list.xhtml b/web/admin/user/admin_user_list.xhtml
index 425ae0d4..b807d457 100644
--- a/web/admin/user/admin_user_list.xhtml
+++ b/web/admin/user/admin_user_list.xhtml
@@ -346,7 +346,7 @@
 						<h:outputText value="#{msg.ADMIN_USER_PERSONAL_DATA_MINIMUM_NOTICE}" />
 					</h:panelGroup>
 
-					<core:outputAdminContactDataFormFields allowEmptyRequiredData="true" />
+					<ui:include src="/WEB-INF/templates/admin/contact/admin_form_contact_data.tpl" />
 				</h:panelGroup>
 
 				<f:facet name="footer">