#java #jsf #xhtml #jsf-2 #openfaces
#java #jsf #xhtml #jsf-2 #openfaces
Вопрос:
Я использую OpenFaces и должен быть совместим с IE6. До сих пор все работает более или менее без проблем.
Однако я столкнулся с проблемой….
У меня есть несколько кнопок внутри формы. Сохранять, добавлять, экспортировать и удалять. Нажатие на Экспорт отлично работает с Firefox и IE8, вызывается exportToCsv() в определенном компоненте, поэтому это должно быть поведение браузера. Нажатие на экспорт с помощью IE6 вызывает add() в компоненте вместо exportToCsv().
Есть идеи?
Заранее благодарю вас.
Комментарии:
1. все еще поддерживаете IE6? Примите мои глубокие соболезнования. Я надеюсь, вы берете за это дополнительную плату.
Ответ №1:
<o:commandButton>
Компонент отображает <button>
тег вместо <input>
только в том случае, если вы указываете отображаемое содержимое кнопки между <o:commandButton>
и </o:commandButton>
. Если вам просто нужно отобразить обычный текст, то вам не обязательно использовать этот подход, и вы можете использовать обычный value
атрибут, который приведет к отображению <input>
тега вместо <button>
, т.е. использовать:
<o:commandButton value="Submit"... />
вместо
<o:commandButton ...>Submit</o:commandButton>
Дело в том, что последняя форма позволяет размещать произвольный HTML-код и, следовательно, требует <button>
тега.
Комментарии:
1. Я действительно указывал содержимое между тегами, и они мне действительно нужны… Однако знаете ли вы обходной путь? Как мне использовать O $.ajax.request для получения файла обратно и открыть файл с помощью window.open (…)? У вас есть пример? Спасибо.
2. Обходным путем является переключение кнопки в режим Ajax путем указания ее атрибутов render / execute, если использование Ajax подходит в вашем случае. Мы также попытаемся исправить это в самом компоненте (просто отследите статус OF-112 )
Ответ №2:
В IE6 есть ошибки с <button>
элементом. Он поддерживает это, но неправильно отправляет значение.
Решение 1: Используйте <input type='button'>
вместо этого. Это, вероятно, наиболее очевидное решение, но в зависимости от дизайна вашей страницы это может быть проблемой, потому что оно не поддерживает вложенные элементы так, <button>
как это делает.
Решение 2. Используйте <button>
, но запускайте действия через Javascript (или, что более вероятно, jQuery), а не отправляйте форму напрямую, и используйте такой метод, как скрытое поле, которое заполняется JS в зависимости от того, какая кнопка нажата, чтобы гарантировать отправку правильных сведений.
Ответ №3:
Это определенно проблема IE6:
- http://www.vancelucas.com/blog/ie6-and-multiple-button-submit-elements/
- http://www.peterbe.com/plog/button-tag-in-IE
Пришло время найти обходной путь…
Ответ №4:
Обходной путь при использовании OpenFaces
<o:outputLink styleClass="linkButton" ...>
.linkButton {
display: block;
float: left;
margin: 0 0 0 0;
background-color: #f5f5f5;
border: 1px solid #dedede;
border-top: 1px solid #eee;
border-left: 1px solid #eee;
font-family: "Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
text-decoration: none;
font-weight: bold;
color: #565656;
cursor: pointer;
padding: 2px 2px 2px 2px; /* Links */
}
Модифицированный CSS из этого источника: