Hoping someone can help me. We are moving to containerizing all our applications and part of this process is converting from ACF to Lucee. I have an older application (almost 20 years) that has been limping around. It is due to be retired but I have to convert the application until that retirement can be finalized.
I am not sure if my problem is due to the age of the application, but this works fine in ACF 11. Currently I am using lucee/lucee52:latest
as my docker image.
This is my ACF code:
<CFAJAXIMPORT SCRIPTSRC="/share/CFIDE/scripts" CSSSRC="/share/CFIDE/scripts/css">
<CFAJAXPROXY CFC="this.that.myCFC" JSCLASSNAME="myCFC">
Currently in ACF we block to the CFIDE folder, so we moved the scripts with CFJAXIMPORT. However, I am not sure how we will handle Lucee yet but everything is default from the image so I removed CFAJAXIMPORT altogether to lessen the complexity.
My folder structure is this:
* this
* * that
* * * myCFC
* * Application.cfc
* * folder
* * * file-with-cfajaxproxy-tag
I only have some variables being set in the Application.cfc but thought I should mention it is there.
First this I noticed is the component could not be found, but it appears to be doubling the first folder. The error is:
invalid component definition, can’t find component [.this.this.that.myCFC]
If I change my code to:
<CFAJAXPROXY CFC="that.myCFC" JSCLASSNAME="myCFC">
Then the page loads without the error. However, I get 400 Bad Request errors on any JS trying to use the CFC. When I view source I see this:
var _Lucee_myCFC = Lucee.ajaxProxy.init('/that/myCFC.cfc','myCFC');
But that is wrong as far as location.
Here is the JS Console log although I did truncate some to avoid sanitizing a lot of stuff:
JSLoader.cfc?method=get&lib=LuceeAjax:1
GET http://sanitize:8080/that/myCFC.cfc?method=myMethod&returnFormat=json&argumentCollection={arguments}&_882084000 400 (Bad Request)
request
@ JSLoader.cfc?method=get&lib=LuceeAjax:1
call
@ JSLoader.cfc?method=get&lib=LuceeAjax:1
Lucee.ajaxProxy.invokeMethod
@ JSLoader.cfc?method=get&lib=LuceeAjax:1
_Lucee_myCFC.myMethod
Uncaught SyntaxError: Unexpected token )
at Object.Lucee.Json.JSON.parse (JSLoader.cfc?method=get&lib=LuceeAjax:1)
at Object.decode (JSLoader.cfc?method=get&lib=LuceeAjax:1)
at Object.Lucee.ajaxProxy.invokeMethod (JSLoader.cfc?method=get&lib=LuceeAjax:1)
at window.(:8080/this/anonymous function)._Lucee_myCFC.myMethod (http://sanitize:8080/this/page-with-cfajaxproxy:23:101)
So the url it is calling is:
http://sanitize:8080/that/myCFC.cfc?method=myMethod&returnFormat=json&argumentCollection={arguments}
Which is not correct as it should be:
Although both urls give a 400 Bad Request. If I alter the second to simplify it things work, so the CFC is operational.
http://sanitize:8080/that/myCFC.cfc?method=myMethod
Will return the WSDL/Documentation and
http://sanitize:8080/that/myCFC.cfc?method=myMethod&returnFormat=json&argument1=value
Properly returns the content I expect.
I am not sure if this is something related to the older code or if there is some differences between how ACF and Lucee works. I would appreciate any help getting this to work.
Thanks!