Использование изображения в качестве метки p:selectOneRadio
Учитывая следующий список <p:selectOneRadio>
,
<p:selectOneRadio layout="grid" columns="1" value="#{1}">
<f:selectItem id="paypal" itemValue="1" itemLabel="Paypal"/>
<f:selectItem id="wireTransfer" itemValue="2" itemLabel="Wire Transfer"/>
</p:selectOneRadio>
Можно ли отобразить изображение как метку <f:selectItem>
так что список выглядит примерно так?
Я пытался с помощью <p:outputLabel>
размещение <p:graphicImage>
внутри и удаление itemLabel
атрибут из<f:selectItem>
внутри <p:selectOneRadio>
но в любом случае это не сработало.
<p:outputLabel for="paypal">
<p:graphicImage library="default" name="images/payments/paypal_logo.jpeg"/>
</p:outputLabel>
1 ответ
Решение
Вы можете решить это, используя SelectOneRadio - Custom Layout
Вот пример:
<h3>Custom Layout</h3>
<p:outputPanel id="customPanel" style="margin-bottom:10px">
<p:selectOneRadio id="customRadio" value="#{radioView.color}" layout="custom">
<f:selectItem itemLabel="Red" itemValue="Red" />
<f:selectItem itemLabel="Green" itemValue="Green" />
<f:selectItem itemLabel="Blue" itemValue="Blue" />
</p:selectOneRadio>
<h:panelGrid columns="3" cellpadding="5">
<p:radioButton id="opt1" for="customRadio" itemIndex="0" />
<h:outputLabel for="opt1" value="Red" />
<p:spinner />
<p:radioButton id="opt2" for="customRadio" itemIndex="1" />
<h:outputLabel for="opt2" value="Green" />
<p:inputText />
<p:radioButton id="opt3" for="customRadio" itemIndex="2" />
<h:outputLabel for="opt3" value="Blue" />
<p:calendar />
</h:panelGrid>
</p:outputPanel>
<p:selectOneRadio id="customRadio" value="#{radioView.image}" layout="custom">
<f:selectItem itemLabel="Image1" itemValue="Image1" />
<f:selectItem itemLabel="Image2" itemValue="Image2" />
</p:selectOneRadio>
<h:panelGrid columns="2" cellpadding="5">
<p:radioButton id="opt1" for="customRadio" itemIndex="0" />
<h:graphicImage value="/some/image2.png"/>
<p:radioButton id="opt2" for="customRadio" itemIndex="1" />
<h:graphicImage value="/some/image2.png"/>
<h:panelGrid columns="3" cellpadding="5">