StrutsUtils 未定义”错误 ReferenceError: StrutsUtils is not defined

本文介绍了如何正确使用Struts2中的s:optionTransferSelect标签,包括必要的页面配置、web.xml设置及避免常见错误的方法。
使用s:optiontransferselect标签必须放在s:form中使用 
报"StrutsUtils 未定义" 错误 

页面要加 <s:head /> 
源文件会生产: 
<script src="/xxxx/struts/utils.js" type="text/javascript"></script> 

web.xml中 
需加如: 

<filter-mapping> 
<filter-name>struts2</filter-name> 
<url-pattern>*.js</url-pattern> 
</filter-mapping> 

或用 

<filter-mapping> 
<filter-name>struts2</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 


拦截js文件 

不要用 
<filter-mapping> 
<filter-name>RemoteLoginFilter</filter-name> 
<url-pattern>*.action</url-pattern> 
</filter-mapping> 
ReferenceError: DOMParser is not defined错误通常在非浏览器环境(如 Node.js、Java 嵌入式 JS 引擎等)中尝试使用浏览器特有的 `DOMParser` API 时出现。以下是针对不同场景的解决方案: ### 添加 DOM 解析库 在非浏览器环境中,可引入第三方库模拟 DOM 功能。以 `xmldom` 库为例: 1. 安装 `xmldom` 库: ```bash npm install xmldom ``` 2. 在 JS 代码中初始化: ```javascript const { DOMParser } = require('xmldom'); global.DOMParser = DOMParser; // 注入到全局对象 ``` ### 修改 GraalVM 配置 如果通过 GraalVM 执行 JS,需注入模拟对象: ```java Context context = Context.newBuilder("js") .allowHostAccess(HostAccess.ALL) .allowHostClassLookup(className -> true) // 注入模拟的 DOMParser .build(); // 创建模拟的 DOMParser 对象 Value domParser = context.eval("js", "function DOMParser() {}; " + "DOMParser.prototype.parseFromString = function(xml) { return xml; }; " + "new DOMParser()" ); // 绑定到全局对象 context.getBindings("js").putMember("DOMParser", domParser); ``` ### 使用 JSDOM 完整模拟浏览器环境 适用于需要完整浏览器环境的场景: 1. 安装 `jsdom`: ```bash npm install jsdom ``` 2. 在代码中初始化: ```javascript const { JSDOM } = require('jsdom'); const dom = new JSDOM(); global.DOMParser = dom.window.DOMParser; ``` ### 错误原因与排查 `DOMParser` 是浏览器特有的 API,用于解析 XML/HTML,在 Node.js、GraalVM 等服务器端环境中,默认不提供浏览器对象模型(BOM/DOM),因此会出现该错误。类似的 `ReferenceError: global is not defined` 和 `ReferenceError: window is not defined` 也属于同一类环境兼容问题[^1]。 关键排查步骤如下: - 确认运行环境,检查代码是否在浏览器中执行。 - 检查依赖注入,确保在非浏览器环境中提前注入必要的全局对象。 - 简化测试,尝试最小化复现代码: ```javascript // 测试代码 try { new DOMParser(); console.log("DOMParser 存在"); } catch (e) { console.error("DOMParser 定义"); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值