From 57e6f5c1ccdcef75c349808608e9a1dc8d6b9c94 Mon Sep 17 00:00:00 2001 From: Andreas Svanberg <andreass@dsv.su.se> Date: Fri, 10 Jan 2025 10:21:02 +0100 Subject: [PATCH] Validate the type selection in the same way as the other fields. Removed the client-side validation (HTML required attribute) and rely on server-side validation with a red feedback message instead. --- .../scipro/match/ProjectIdeaSubmissionPanel.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/view/src/main/java/se/su/dsv/scipro/match/ProjectIdeaSubmissionPanel.java b/view/src/main/java/se/su/dsv/scipro/match/ProjectIdeaSubmissionPanel.java index acdf6b0655..f22d2d041a 100755 --- a/view/src/main/java/se/su/dsv/scipro/match/ProjectIdeaSubmissionPanel.java +++ b/view/src/main/java/se/su/dsv/scipro/match/ProjectIdeaSubmissionPanel.java @@ -18,6 +18,7 @@ import org.apache.wicket.model.*; import org.apache.wicket.model.util.ListModel; import org.apache.wicket.model.util.SetModel; import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.util.value.IValueMap; import org.apache.wicket.validation.validator.StringValidator; import se.su.dsv.scipro.components.*; import se.su.dsv.scipro.generalsystemsettings.GeneralSystemSettings; @@ -187,7 +188,17 @@ public class ProjectIdeaSubmissionPanel extends GenericPanel<Idea> { LambdaModel.of(getModel(), Idea::getProjectType, Idea::setProjectType), projectTypes, new LambdaChoiceRenderer<>(ProjectType::getName, ProjectType::getId) - ); + ) { + @Override + protected IValueMap getAdditionalAttributes(int index, ProjectType choice) { + IValueMap valueMap = super.getAdditionalAttributes(index, choice); + // Have to remove the client side validation for required + // to have this field behave like all the others on the form. + // Can't remove the call to #setRequired(true) as it is needed for server side validation. + valueMap.remove("required"); + return valueMap; + } + }; projectTypeChoice.add( new AjaxFormChoiceComponentUpdatingBehavior() { @Override