【问题标题】:Forward slashed removed in form id在表单 ID 中删除正斜杠
【发布时间】:2013-05-21 18:34:48
【问题描述】:

我正在使用 Struts2(2.3.14),并且在 java 服务器端代码中创建的变量中包含的正斜杠字符在使用 struts 表单标签后被转义为 _

代码(JSP):

<div class="activetab" id="sub_${mytable}">
    <s:form id="%{mytable}" onsubmit="return go('%{mytable}');">

转换成html:

<div class="activetab" id="sub_changePassword/execute">
    <s:form id="changePassword_execute" onsubmit="return go('changePassword/execute');">

不明白为什么我在 ID 属性中得到“changePassword_execute”而不是“changePassword/execute”......(其他属性似乎没问题)。

id="${myTable}" 是不可能的,因为$ 不是表单 id 属性中的有效通配符。

很奇怪,有什么想法吗?

【问题讨论】:

  • 请给一些代码?还有格式化。
  • 有人指出这是一个坏主意,如果你坚持......只需使用 HTML,带有 struts2 属性标签。

标签: java forms struts2 tags struts


【解决方案1】:

斜杠不是有效的 DOM ID 字符:

我必须仔细检查,但可能是表单标签将非法 ID 字符转换为下划线。

【讨论】:

  • 没错,但是更新了struts框架后一直在发生,猜猜怎么排序。
  • 不要使用无效的 DOM 标识符?
  • 更新 struts 版本后,框架似乎“转义”了正斜杠(我猜是因为安全问题)。作为一种可能的解决方案,只需将 struts 表单替换为普通的 html 表单,因为更改 id 有一些其他问题。
  • @kandan 使用无效的 DOM 标识符也可能会带来一些其他问题,例如浏览器差异、JS 可访问性等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-08
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
相关资源
最近更新 更多