我们通过替换 Struts 核心 jar 文件将 Struts 从 2.5.26 升级到 2.5.30 后,看起来 Struts 执行的 JSP 页面字段 id 生成与以前的 Struts 不同。例如,我们的 JSP 中有一个这样的字段名称:
当Strut 2.5.30在运行时翻译成html页面时,它看起来像这样:
所以看起来 Struts 将原始字段名称中的字段 id 中的“'”和“[”都替换为“_”。 2.5.30 之前的 Struts 中并不是这样工作的。
在我们的 JavaScript 代码中,我们期望字段 id 根据其字段名称看起来像“SequentialOne_seqResponseMap['seq1_decision_outcome_partially_favorable_chk__01']””,因此它不再起作用。
这就是 Struts 2.5.30 中应有的工作方式吗?还是我们在升级过程中遗漏了一些东西?
非常感谢您的帮助。
表单标签中的
id
属性是自动生成的。但如果你指定html ID属性,它可能会过度。
所有表单标签都会自动为控件分配一个 ID,但如果需要,可以覆盖该 ID。
Forms 默认ID是动作名称。例如,
。 控件 默认 ID 是表单名称与标签名称连接。例如,“updateAddress”
。“updateAddress_postalCode”
要覆盖 ID 属性的值,您可以使用 altSyntax。
改变了标签的解释方式。只评估标记的表达式,而不是根据值堆栈评估每个标记参数并需要单引号来标记字符串文字。altSyntax
所以,你可以使用类似的东西
<s:checkbox
name="seqResponseMap['seq1_decision_outcome_partially_favorable_chk__01']"
id="seqResponseMap[%{'seq1_decision_outcome_partially_favorable_chk__01'}]"
...
/>