We ran into a similar problem with stored procedures when we moved from a CF5 to a CFMX server. We ended up using only cfsqltype="CF_SQL_VARCHAR" for type="In" because using cfsqltype="CF_SQL_NUMERIC" caused a numeric error when passing data type of "" (null). I just ran some tests on your problem and got the same results.
Here is some code to play with.
<!--- Save this section as input_page.cfm --->
<cfparam name="int_test1" default = "">
<cfparam name="int_test2" default = "">
<table class="report" cellspacing="1" width="200" border="1">
<cfform name="test" action="input_page.cfm" method="POST">
<tr>
<td nowrap>My Number with input validation.</td>
<td>
<!--- Putting trim() around int_test here only trims when the page loads. It does not
trim the value when the page performs any checks upon submitting. --->
<cfinput type="Text" name="int_test1" value="#trim(int_test1)#" validate="integer"
message="Please enter an integer">
</td>
<td colspan="2" align="center">
<input type="Submit" name="Submit" value="Submit">
</td>
</tr>
</cfform>
</table>
<table class="report" cellspacing="1" width="200" border="1">
<cfform name="test2" action="validation_page.cfm" method="POST">
<tr>
<td nowrap>My Number validated on a second page</td>
<td>
<!--- Putting trim() around int_test here only trims when the page loads. It does not
trim the value when the page preforms any checks upon submitting. --->
<cfinput type="Text" name="int_test2" value="#int_test2#" >
</td>
<td colspan="2" align="center">
<input type="Submit" name="Submit" value="Submit">
</td>
</tr>
</cfform>
</table>
<!--- Second page - save this section as validation_page.cfm -
if you do your validation here, you can catch the spaces --->
<!--- remove any leading or trailing blank spaces --->
<cfset int_test2 = trim(int_test2)>
<!--- attempt to get CF to put variable back in "stateless mode" --->
<cfset int_test3=int_test2>
<cfif isNumeric(int_test3)>
<!--- Uncomment the following line to filter out blank spaces --->
<!--- <cfif isNumeric(int_test3) or int_test3 is ""> --->
<cfoutput>#int_test3# is a valid number!</cfoutput>
<cfelse>
<cfoutput>Check for blanks ***#int_test3#***</cfoutput>
<script language="JavaScript">
<!--
window.alert("Please enter a valid number"

;
window.history.go(-1);
//-->
</script>
<cfabort>
</cfif><!--- isNumeric(int_test) or int_test is "" --->