 <p>That's not possible with <a href="http://www.primefaces.org/showcase/ui/input/manyCheckbox.xhtml" rel="nofollow"><code>&lt;p:selectManyCheckbox&gt;</code></a>. Your best bet is to just use a bunch of <a href="http://www.primefaces.org/showcase/ui/input/booleanCheckbox.xhtml" rel="nofollow"><code>&lt;p:selectBooleanCheckbox&gt;</code></a> components instead and change the model to be <code>Map&lt;Entity, Boolean&gt;</code> instead of <code>List&lt;Entity&gt;</code>. You can loop over it using <code>&lt;ui:repeat&gt;</code>.</p> <p>E.g. (normal XHTML variant; I am not going to advocate the Java <code>createComponent()</code> equivalent):</p> <pre><code>&lt;ui:repeat value="#{bean.entities}" var="entity"&gt; &lt;p:selectBooleanCheckbox value="#{bean.selection[entity]}" /&gt; ... (you can put here image, label, anything) &lt;/ui:repeat&gt; </code></pre> <p>with</p> <pre><code>private List&lt;Entity&gt; entites; private Map&lt;Entity, Boolean&gt; selection; @PostConstruct public void init() { entities = service.list(); selection = new HashMap&lt;&gt;(); // No need to prefill it! } </code></pre> <p>To check which ones are selected, loop over the map in action method:</p> <pre><code>List&lt;Entity&gt; selectedEntities = new ArrayList&lt;&gt;(); for (Entry&lt;Entity, Boolean&gt; entry : selection.entrySet()) { if (entry.getValue()) { selectedEntities.add(entry.getKey()); } } </code></pre>