<p: selectOneButton> с изображениями
Я использую JSF с Primefaces, я хочу использовать кнопку радио-кнопки только с изображениями, но я не могу заставить ее работать.
Вот код:
<p:selectOneButton value="#{LoginBean.user}" >
<f:selectItem itemLabel="<img src="/myApp/faces/javax.faces.resource/myImg1.png?ln=img"/>" itemValue="1"/>
<f:selectItem itemLabel="<img src="/myApp/faces/javax.faces.resource/myImg2.png?ln=img"/>" itemValue="2"/>
</p:selectOneButton>
Я пробовал экранировать символы с атрибутами escape, escapeItem и даже itemEscaped. Я прочитал о последнем в этом другом вопросе. Решение в этом вопросе использует <h:selectOneRadio>
не <p:selectOneButton>
,
Примечание: я знаю, что это работает с использованием jQueryUI buttonset()
метод (Primefaces использует его в фоновом режиме), так что это не проблема сценария..
Итак, возможно ли сделать это с <p:selectOneButton>
?
Спасибо!
2 ответа
Действительно, рендер <p:selectOneButton>
не учитывает HTML в ярлыках. Лучше всего вместо этого установить его в качестве фонового изображения CSS.
Учитывая
<p:selectOneButton ... styleClass="buttons">
Вы можете стилизовать отдельные кнопки с помощью CSS3 :nth-child()
pseudoselector
.buttons .ui-button:nth-child(1) {
background: url("#{resource['img/myImg1.png']}") no-repeat;
}
.buttons .ui-button:nth-child(2) {
background: url("#{resource['img/myImg2.png']}") no-repeat;
}
Однако если вы нацелены на браузеры, которые не поддерживают его ( определенные версии IE), то вы не можете выполнять работу через JS/jQuery.
$(".buttons .ui-button:eq(0)").css("background", "url('resources/img/myImg1.png') no-repeat");
$(".buttons .ui-button:eq(1)").css("background", "url('resources/img/myImg2.png') no-repeat");
Не имеет отношения к конкретной проблеме, как вы используете ресурс library
не совсем верно. Внимательно прочитайте, для чего нужна библиотека ресурсов JSF и как ее использовать? чтобы узнать больше об этом.
Я просто хотел использовать Font Awesome Icons. Это возможно, установив
font-family: FontAwesome
и используя эти коды: https://fontawesome.com/v4.7.0/cheatsheet/
<p:selectOneButton value="#{mybean.alignment}" style="font-family: FontAwesome;">
<f:selectItem itemValue="align-left" itemLabel=""/>
<f:selectItem itemValue="align-center" itemLabel=""/>
<f:selectItem itemValue="align-right" itemLabel=""/>
</p:selectOneButton>