Вы добавляете параметр lang к любому URL, который привел вас на страницу. Таким образом, если вы перейдете к форме через /registration.html, то ссылки En и Ru также приведут к /registration.html. Предположительно, этот контроллер поддерживает GET, поэтому, когда вы нажимаете на ссылку и генерируете запрос GET, все работает.
После того, как вы разместили форму, ссылки En и Ru ведут к /user.html, потому что именно так вы запрограммировали страницу. Нажмите на эти ссылки, и вы сгенерируете запрос GET в /user.html. Предположительно, это терпит неудачу, потому что контроллер для /user.html поддерживает POST, но не GET.
К вашему сведению, вы можете точно видеть, что происходит, как на стороне клиента, так и на стороне сервера. В любом случае используйте любое количество инструментов для отслеживания трафика HTTP, идущего туда-сюда.
Скорее всего, вы используете Spring таким образом, что переключение языков происходит на стороне сервера, поэтому вам нужно снова получить реальную страницу. В частности, чтобы исправить вашу регистрационную форму, проще всего будет сбросить данные, которые пользователь уже ввел, и просто переключить ссылку, чтобы указать на /registration.html, даже если проверка формы не удалась. (Другими словами, ссылка НЕ должна создаваться на основе того, какой URL привел вас на страницу.) Скорее всего, пользователь не будет переключать языки в середине. Однако, если вы должны хранить данные формы, требуется другой подход.