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