Struts2 генерирует value=Submit, что, по мнению валидатора разметки W3C, является ошибкой.

У меня есть следующий код тега <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 как ошибочный. Сообщение об ошибке:

Атрибутvalue в данный момент не разрешен для элемента input.

Очевидно, что value не является разрешенным атрибутом, когда типом является изображение. Как запретить Struts2 генерировать атрибут value?


person ponder275    schedule 04.05.2016    source источник
comment
Специалист по сопровождению средства проверки HTML W3C (валидатора) здесь. Это не ошибка в программе проверки HTML. Средство проверки соответствует спецификации, не разрешая атрибут value в этом случае. Если вы перейдете на html.spec. whatwg.org/multipage/ и прокрутите вниз до раздела Подробности бухгалтерского учета, вы увидите, что там написано: «Атрибут value элемента должен быть опущен».   -  person sideshowbarker    schedule 04.05.2016
comment
Спасибо. Надеюсь, кто-нибудь подскажет, как сделать так, чтобы Struts2 не генерировал этот атрибут.   -  person ponder275    schedule 04.05.2016
comment
Создайте для этого задачу jira — issues.apache.org/jira/browse/WW.   -  person Aleksandr M    schedule 04.05.2016
comment
Это не проблема, валидатор говорит, что все в порядке.   -  person Roman C    schedule 04.05.2016
comment
@RomanC Где ты видишь нормально?   -  person Aleksandr M    schedule 04.05.2016
comment
Это допустимо в HTML 4, потому что DTD не могут сделать атрибут запрещенным только в том случае, если другой атрибут имеет определенное значение. HTML 5 не использует DTD, поэтому он может пометить его как недействительный.   -  person Quentin    schedule 04.05.2016
comment
@AleksandrM Я использовал валидатор W3C, и этот вопрос не относится к struts2.   -  person Roman C    schedule 04.05.2016
comment
@RomanC — вопрос заключается в том, как запретить struts2 генерировать атрибут значения при вводе изображения. Это полностью о struts2.   -  person Quentin    schedule 04.05.2016
comment
@Quentin Второй вопрос заключается в том, чтобы проверить ошибку в валидаторе. В любом случае это не по теме, потому что неясно, о чем на самом деле спрашивают.   -  person Roman C    schedule 04.05.2016
comment
@RomanC — Вопрос совершенно ясен. Прав ли валидатор, если да, то как мне исправить код struts2, чтобы исправить HTML? Комментарии установили, что валидатор прав, поэтому все сводится к тому, как мне это исправить?. Часть о валидаторе — это просто разумная проверка, чтобы убедиться, что вопрос не основан на ложной предпосылке.   -  person Quentin    schedule 04.05.2016
comment
@Quentin Нет, ОП не сказал, прав ли валидатор, если да, то как мне это исправить? Комментарий сделал это, но вопрос не в том, OP не уверен в том, как работает валидатор, а также OP не просит исправить ошибку в структуре struts2, он просит исправить ее в валидаторе.   -  person Roman C    schedule 04.05.2016
comment
@RomanC - Нет. Очевидно, что значение не является разрешенным атрибутом, если типом является изображение. Как запретить Struts2 генерировать атрибут value? очень четко спрашивает, как запретить Structs2 генерировать атрибут value. Тогда Или это ошибка в W3C Validator? просто проверяет, действительно ли это ошибка (в Structs2), которую нужно исправить… так и есть. Поскольку это так, первая часть вопроса стоит как важная часть.   -  person Quentin    schedule 04.05.2016
comment
@Quentin Нет такой структуры Structs2, вы просто размышляете над первым вопросом и забываете о втором. ошибка в валидаторе W3C   -  person Roman C    schedule 04.05.2016
comment
@RomanC — я не забыл об этом! Я постоянно упоминаю об этом в своих комментариях! Есть два способа ответить на этот вопрос. 1. Так вы мешаете Struts2 генерировать атрибут значения и 2. Это ошибка в валидаторе. Вот раздел из спецификации, который поддерживает это. Комментарии установили, что 2 будет неправильным ответом.   -  person Quentin    schedule 04.05.2016
comment
Поскольку @sideshowbarker показал, что валидатор был правильным, мне нужно знать, как не дать Struts2 генерировать атрибут value. Я создал jira, как рекомендовал @Aleksandr.   -  person ponder275    schedule 04.05.2016


Ответы (1)


Пока не будет выпущена исправленная версия, у вас есть несколько вариантов.

  • Используйте простой тег ввода HTML <input type="image" ...> вместо <s:submit>. Если вы используете тему не simple, вам также следует добавить <input> в некоторые теги HTML.

  • Скопируйте submit.ftl из jar-файла struts2-core в свой проект и измените его.

  • Просто игнорируйте эту ошибку W3C Markup Validator, вероятно, есть вещи похуже, о которых стоит беспокоиться. :)

person Aleksandr M    schedule 05.05.2016