tomcat-taglibs-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason Lea <ja...@kumachan.net.nz>
Subject Re: Fw: [OT]Re: <sql:param> null weirdness BACK ON TOPIC
Date Wed, 20 Aug 2003 00:53:59 GMT
Rick Ross wrote:

> Honestly, I have zero interest in this kind of debate... I'm sure we all
> take the approach we feel is best for our clients.
> 
> Lest we forget, the question at hand is about nulls in <sql:param> and the
> EL expression evaluator.  The difference between null and "" is likely to
> matter to anyone querying databases, MVC or not.

I have been looking at the spec and I found this bit in JSTL 1.0 Spec 
section 2.5

"2.5 Body Content
If an action accepts a body content, an empty body is always valid, 
unless explicitly stated otherwise.
If the body content is used to set the value of an attribute, then an 
empty body content sets the attribute value to an empty string."

In 10.7 <sql:param> has this bit
"Body Content
JSP. The JSP container processes the body content, then the action trims 
it and processes it further."

and this...
"Null & Error Handling
If value is null, the parameter is set to the SQL value NULL."

In 4.2 <c:out>
"Null & Error Handling
If value is null, the default value takes over. If no default value is 
specified, it itself defaults to an empty string."

So looking at this:

   <sql:param><c:out value="${param.time}" /></sql:param>

<c:out> should be producing an empty string because ${param.time} is 
either empty, and if it was null <c:out> produces an empty string by 
default.

<sql:param> should be taking the empty string and trimming it.  Which I 
would have thought still gives you an empty string (see 2.5 above).

I can't see where <sql:param> would get a null value from.  So, to me, 
it doesn't look like an SQL NULL should be sent in the update.

Perhaps you should do a specific check for the empty param.time and 
provide the <sql:param> with null to be sure.

> 
> R
> 
> 
> 
>>----- Original Message ----- 
>>From: "Mark Galbreath" <mark_galbreath@qat.com>
>>To: "'Tag Libraries Users List'" <taglibs-user@jakarta.apache.org>
>>Sent: Tuesday, August 19, 2003 2:02 PM
>>Subject: RE: [OT]Re: <sql:param> null weirdness
>>
>>
>>What type of application do you have in mind..."hello world?"
>>
>>Mark
>>
>>-----Original Message-----
>>From: Rick Ross [mailto:rross@stupendousman.com]
>>Sent: Tuesday, August 19, 2003 12:52 PM
>>To: Tag Libraries Users List
>>Subject: Re: [OT]Re: <sql:param> null weirdness
>>
>>
>>Well, firstly I don't beleive that every application should apply the MVC
>>pattern/practice.  But even if you did, there is no reason you couldn't
>>apply it within JSP/JSTL itself.  In JSP 2 you can create your own tags
> 
> from
> 
>>JSP fragments.
>>
>>R
>>----- Original Message ----- 
>>From: "Daniel Haynes" <daniel.haynes1@btinternet.com>
>>To: "Tag Libraries Users List" <taglibs-user@jakarta.apache.org>
>>Sent: Tuesday, August 19, 2003 1:20 AM
>>Subject: RE: [OT]Re: <sql:param> null weirdness
>>
>>
>>
>>>They do say in the spec somewhere that the sql library in JSTL should
>>>only be used in rapid prototyping and not in production code because
>>>the
>>
>>library
>>
>>>does break the considered MVC best practice of keeping the
>>>presentation separate from the model.
>>>
>>>dan
>>>
>>>-----Original Message-----
>>>From: Marco Tedone [mailto:mtedone@jemos.org]
>>>Sent: 17 August 2003 09:03
>>>To: Tag Libraries Users List
>>>Subject: [OT]Re: <sql:param> null weirdness
>>>
>>>Just a question which came into my mind by reading at this email. It
>>>has been said that JSPs allow separation of roles between the web and
>>>the business developers so that, ideally, the former should work
>>>independently by the latter. Then, because prior to Struts-el :) some
>>>java code was mungled within the JSP code, then Struts-el came out. I
>>>am wondering
>>
>>whether
>>
>>>an <sql:update> element as the one below, would actually separate the
>>>front-end developer by the business developer. At the end, hasn't
>>>Struts been invented to exhibit an handful MVC framework for web
>>>applications?
>>>
>>>Regards,
>>>
>>>Marco
>>>----- Original Message -----
>>>From: "Rick Ross" <rross@stupendousman.com>
>>>To: <taglibs-user@jakarta.apache.org>
>>>Sent: Sunday, August 17, 2003 7:11 AM
>>>Subject: <sql:param> null weirdness
>>>
>>>
>>>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
>>>
>>>
>>>
>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: taglibs-user-unsubscribe@jakarta.apache.org
>>>For additional commands, e-mail: taglibs-user-help@jakarta.apache.org
>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: taglibs-user-unsubscribe@jakarta.apache.org
>>>For additional commands, e-mail: taglibs-user-help@jakarta.apache.org
>>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: taglibs-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: taglibs-user-help@jakarta.apache.org
>>
>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: taglibs-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: taglibs-user-help@jakarta.apache.org
>>
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: taglibs-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: taglibs-user-help@jakarta.apache.org
> 
> 


-- 
Jason Lea


Mime
View raw message