FreeMarker formatted an integer with a comma when I didn’t expect it. This caused my form post to fail.
I was using the template language FreeMarker to generate HTML pages. The application included several simple web forms for editing objects in the database. The forms included a hidden field for the database id of the object being modified.
<input type="hidden" name="id" value="${id}">
The database id was an integer. The application worked fine until the database id reached 1000. Then FreeMarker formatted the integer as 1,000
, which my backend server considered an invalid integer because of the comma.
To fix this, I used the “computer language” builtin ?c to force FreeMarker to format the value without a comma.
The corrected line is
<input type="hidden" name="id" value="${id?c}">
To avoid this problem in your application, you might consider starting all database ids at 1000 so this problem is found immediately.
Be careful out there.