【问题标题】:Struts2 generates value="Submit" which the W3C markup validator says is an errorStruts2 生成 value="Submit" W3C 标记验证器说这是一个错误
【发布时间】:2016-08-30 00:55:15
【问题描述】:

我有以下<s:submit>标签代码:

<s:submit action="shipment_deleteShipperFromChosenShipperViewList" 
          type="image" src="/llr/theme/delete.gif"
          onclick="clearDirtyFlag();deleteShipperFromChosenShipperViewList('%{organizationInfo.orgId}');"
          tabindex="16" />

生成以下 HTML:

<input type="image" 
       alt="Submit" 
       src="/llr/theme/delete.gif" 
       id="shipment_shipment_deleteShipperFromChosenShipperViewList" 
       name="action:shipment_deleteShipperFromChosenShipperViewList" 
       value="Submit"
       tabindex="16"
       onclick="clearDirtyFlag();deleteShipperFromChosenShipperViewList('1');"/>

W3C 标记验证器 (W3C) 将 HTML 标记为错误。错误信息是:

此时,元素input 上不允许使用属性value。

当类型为图像时,value 显然是不允许的属性。如何防止 Struts2 生成 value 属性?

【问题讨论】:

  • 这里是 W3C HTML 检查器(验证器)的维护者。这不是 HTML 检查器中的错误。检查器符合规范,在这种情况下不允许 value 属性。如果您转到 html.spec.whatwg.org/multipage/… 并向下滚动到 Bookkeeping details 部分,您会看到它说:“必须省略元素的 value 属性。”。
  • 它在 HTML 4 中是有效的,因为 DTD 不能仅在另一个属性具有特定值时才禁止一个属性。 HTML 5 不使用 DTD,因此可以将其标记为无效。
  • @RomanC — 问题是询问如何防止 struts2 在图像输入上生成值属性。这完全是关于 struts2 的。
  • @RomanC — 问题非常清楚。 “验证器是否正确,如果是,我该如何修复我的 struts2 代码以修复 HTML?”。 cmets 已经确定验证器 是 正确的,所以它只是归结为“我该如何解决它?”。关于验证器的部分只是一个合理的检查,以确保问题不是基于错误的前提。
  • 由于@sideshowbarker 显示验证器是正确的,我确实需要知道如何防止Struts2 生成value 属性。我按照@Aleksandr 的建议创建了一个 jira。

标签: html struts2 w3c-validation html-input struts-tags


【解决方案1】:

在发布固定版本之前,您有几个选择。

  • 使用纯 HTML 输入标签 &lt;input type="image" ...&gt; 而不是 &lt;s:submit&gt;。如果您使用的不是simple 主题,那么您还应该将&lt;input&gt; 放入一些HTML 标记中。

  • 将 struts2-core jar 中的 submit.ftl 复制到您的项目中并进行修改。

  • 忽略这个 W3C 标记验证器错误,可能还有更糟糕的事情需要担心。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    相关资源
    最近更新 更多