I wonder if I am not understanding EL properly...
I have a form
<form>
....
<input type="text" name="time" />
<input type="submit" name="submit" />
</form>
and then a nice sql update to catch the form
<sql:update>
INSERT INTO myTable VALUES ( ? )
<sql:param value="${param.time}" />
</sql:update>
The problem comes when the form parameter is empty. Since the actual database field
is a mySQL TIME field, there is a very big difference between an empty string and a
null. Empty strings will be converted into '00:00:00' in the database but nulls will
just stay null (nulls are allowed and no defaults are specified).
The sql:param tag will never return a null if there is a "time" key in the params.
Since the form always posts the parameter, I'll always have '&time=&somethingelse='
in my request. <sql:param> sees this as an empty string "", which becomes '00:00:00'
in my database.
This however, works:
<sql:param><c:out value="${param.time}" /></sql:param>
I am assuming that this is an intentional thing, but I'm not sure and I'd like to know
why.
Anyone?
Thanks,
R