Во-первых, я собираюсь предложить несколько незапрошенных советов :) Даже если ваш код javascript обрезает ввод от пользователя, вы не можете гарантировать, что этот код будет всегда работать. Например, пользователь может отключить JavaScript в своем браузере или просто использовать библиотеку (их существует много) для программного отправки данных формы без использования какого-либо браузера.
Итак, вы всегда должны обрезать ввод на стороне сервера (в вашем случае, в JSP). В производственных системах вам нужно сделать немного больше, чем просто обрезку, вам также нужно проверить максимальные размеры и типы данных (поэтому, если ваш JSP требует числового ввода, вы должны проверить это)
Это означает, что вам, по сути, нужно выполнить проверку данных дважды. Проверка данных, которую вы выполняете в браузере, помогает пользователю и должна показывать удобное сообщение, когда вводится что-то недопустимое. Важной концепцией является то, что проверка браузера не предназначена для обеспечения безопасности, поскольку она не обеспечивает никакой. Безопасность обеспечивается проверкой на стороне сервера. Для проверки на стороне сервера не так важно предоставлять удобную обратную связь; хорошо, если это так, но это не главный приоритет.
Теперь к вашему вопросу. Когда вы звоните что-то вроде
trim(document.insert.aname.value)
это не меняет значение в форме. Он просто возвращает урезанную версию данных формы. Поэтому, когда вы отправляете форму, пробел в конце 'test' совпадает с данными формы.
Для javascript возможно манипулировать тем, что находится в форме, но это обычно не делается и не рекомендуется. Итак, подведем итог:
- Ваш код не удаляет завершающий пробел для предоставленных пользователем данных
- Вы можете изменить свой код, чтобы сделать это, но это не будет хорошей идеей, поскольку вам придется выполнять обрезку на сервере независимо от того,
- Поэтому вам нужно обрезать его на сервере
Надеюсь, это поможет.
Фил