From 592d5ec24c5da5c17c2569406a0c17f89c98fc24 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 11 Feb 2026 18:17:24 -0600 Subject: [PATCH] Restore hasArg guard in parse_string_param_ Empty string is a valid value for string params (e.g. select options). Must use hasArg to distinguish missing from empty. --- esphome/components/web_server/web_server.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/esphome/components/web_server/web_server.h b/esphome/components/web_server/web_server.h index 33f10fc4c9..026da763ea 100644 --- a/esphome/components/web_server/web_server.h +++ b/esphome/components/web_server/web_server.h @@ -543,9 +543,8 @@ class WebServer : public Controller, template void parse_string_param_(AsyncWebServerRequest *request, ParamNameType param_name, T &call, Ret (T::*setter)(const std::string &)) { - const auto &value = request->arg(param_name); - // Arduino String has isEmpty() not empty(), use length() for cross-platform compatibility - if (value.length() > 0) { // NOLINT(readability-container-size-empty) + if (request->hasArg(param_name)) { + const auto &value = request->arg(param_name); (call.*setter)(std::string(value.c_str(), value.length())); } }