Lucee环境下设置CFForm的scriptSrc属性出现404错误问题求助
问题根因
Lucee的<cfform>标签scriptSrc属性配置逻辑、Tomcat默认的路径访问规则两个问题共同导致报错:
- Lucee会自动在你填写的
scriptSrc路径末尾拼接斜杠,再追加cfform.js等依赖文件的文件名,你测试时已经发现路径带斜杠访问会返回404 - 相对路径匹配容易因为当前页面的访问层级出现偏差,导致请求路径错误
解决方案
1. 修正scriptSrc属性配置
优先使用站点根路径开头的绝对路径配置,且不要加末尾斜杠,Lucee自动拼接文件名时会自动处理路径分隔符:
<cfform name = "OfferCreateForm" action = "OfferCreate_Processing.cfm" method = "post" onSubmit = "return(ClientSideValidation() && DoubleSubmissionCheck());" scriptSrc = "/appname/Templates/JavaScripts">
配置完成后先直接访问http://127.0.0.1:8888/appname/Templates/JavaScripts/cfform.js,确认文件可以正常加载。
2. 补全cfform依赖文件
如果访问cfform.js返回404,说明你的项目目录下缺少对应文件,直接从Lucee安装目录的\lucee-server\context\cfform\路径下把所有JS文件拷贝到你的项目\Templates\JavaScripts\目录即可。
3. 修复Tomcat斜杠访问404问题(可选)
如果需要兼容带斜杠的目录访问请求,可以修改Tomcat配置:
- 打开
C:\lucee\tomcat\conf\web.xml文件 - 找到
DefaultServlet的配置段,添加/修改两个参数:
<init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>directorySlash</param-name> <param-value>true</param-value> </init-param>
- 重启Lucee服务生效,
listings设为false是为了关闭目录列表,避免泄露目录结构。
4. 快速替代方案
如果上述配置依然不生效,可以直接关闭cfform自动引入JS的逻辑,手动引入依赖:
<!-- 页面头部手动引入cfform.js --> <script src="/appname/Templates/JavaScripts/cfform.js"></script> <!-- cfform添加scriptSrc="false"关闭自动引入 --> <cfform name = "OfferCreateForm" action = "OfferCreate_Processing.cfm" method = "post" onSubmit = "return(ClientSideValidation() && DoubleSubmissionCheck());" scriptSrc = "false">
内容的提问来源于stack exchange,提问作者HDuck
相关产品推荐
相关产品推荐

