Null Java References in CF 6 vs 7
By Pete Freitag
ColdFusion 7 appears to be much better at passing null
values to a java object. ColdFusion 6 however likes to block you from doing it, even when you want to.
I am tring to work with a java API that requires me to pass a null value to a method. Since CFMX 6 has no way of creating a null value I though I would use the Java API to concoct one. So I did something like this:
vector = CreateObject("java", "java.util.Vector"); vector.setSize(1); someAPI.methodThatRequiresANull(vector.get(0));
This works on ColdFusion 7, but on ColdFusion 6 it throws an exception:
The system has attempted to use an undefined value, which usually indicates a programming error, either in your code or some system code.
Null Pointers are another name for undefined values.
This trick isn't really useful because in ColdFusion 7 you can create a null value by calling JavaCast
and using "null"
as the type.
For example:
someAPI.methodThatRequiresANull( JavaCast("null", "") );
Does anyone know of a way to pass nulls that works in CF 6? I know I could just write some java, but I want the solution to be pure CFML in this case.
Null Java References in CF 6 vs 7 was first published on January 10, 2006.
If you like reading about java, null, cfobject, createobject, coldfusion, or cfml then you might also like:
- URL Safe Base64 Encoding / Decoding in CFML
- ColdFusion Heap / Non-Heap Memory Usage Script
- Serializing CFC's in ColdFusion 8
- What's New in BlueDragon 7?
The FuseGuard Web Application Firewall for ColdFusion & CFML is a high performance, customizable engine that blocks various attacks against your ColdFusion applications.
CFBreak
The weekly newsletter for the CFML Community
Comments
<cfset variables.imageObserver = createObject("java", "java.awt.Button").init()/>
I haven't tested yet, but I would think a generic one like this would work for all object types CreateObject('java', 'java.lang.Object').
Does this need to be in one CFC? If not, you could create a java class which acts as a facade for your functionality.