Is there a way to tell JSF that it should NOT render a <table>
element when using <h:selectOneRadio>
?
I don't use tables and it makes absolutely no sense in this case.
Any help is appreciated!
Is there a way to tell JSF that it should NOT render a <table>
element when using <h:selectOneRadio>
?
I don't use tables and it makes absolutely no sense in this case.
Any help is appreciated!
i don't know if it's reasonable enough for you but, here is a sample work-around.
xhtml code:
backing bean:
since you cannot assign a value to the radio selection directly on xhtml, you need to get it from request parameters and assign it manually within your action method.
JSF 2.3 with
group
attributeAs per JSF spec issue 329 I have added a new
group
attribute to<h:selectOneRadio>
which should make this all much less tedious. All radio button components having the samegroup
value within a parentUIForm
will be grouped with each other. Also they won't render any markup besides the radio button itself and the optional label if the select item has a non-nulllabel
. If any, the label appears directly after the radio button.Following scenarios are also possible. When there are multiple components with same
group
, and thevalue
attribute and/orUISelectItem
child is absent, then it will reference those of the first component of the group.It will be available in Mojarra as per 2.3.0-m07.
JSF 2.2 with passthrough elements
If you're on JSF 2.2 already, make use of its new passthrough elements/attribtues feature whereby you explicitly set the
name
attribute as a passthrough attribute. In order to set the submitted value in the model, you only need an additional<h:inputHidden>
.In depth technical explanation can be found in this blog: Custom layout with h:selectOneRadio in JSF 2.2.
PrimeFaces (JSF 2.x)
If you happen to use PrimeFaces, then you can also use
<p:selectOneRadio layout="custom">
with<p:radioButton>
.You can also loop over the available items, you only need to do it during view build time:
Tomahawk (JSF 1.x or 2.x)
If you're not on JSF 2.2 yet or if you don't like PrimeFaces UI, grab Tomahawk's
<t:selectOneRadio>
which renders the same plain HTML output as<h:selectOneRadio>
, but supports alayout="spread"
attribute so that you can position the items by<t:radio>
the way you want.E.g.
Custom Renderer
Supply a custom
Renderer
. It's only a bit of work. Start at the first "See also" link shown below:See also: