Each radio button element requires an assigned value that distinguishes it from the other radio buttons. When creating a static array of radio buttons, you need to indicate which one of these, if any, is checked. This does not need to be done when the radio buttons are being populated from dynamic data. The control can compare itself to the form bean's property and then check itself when appropriate. Given a set of <html:radio> controls like this: <html:radio property="expectedVia" value="UPS"/>UPS <html:radio property="expectedVia" value="FEDX"/>Federal Express <html:radio property="expectedVia" value="AIRB"/>AirBorne And that the expectedVia property on the form bean was already set to "UPS", then the HTML radio elements would be rendered like this: <input type="radio" name="expectedVia" value="UPS" checked="checked">UPS <input type="radio" name="expectedVia" value="FEDX">Federal Express <input type="radio" name="expectedVia" value="AIRB">AirBorne If you need to create a dynamic set of radio buttons, or want to localize the values, you can create in an Action a collection of LabelValueBeans with the appropriate labels and values for each button. Here's an example: ArrayList shippers = new ArrayList(); shippers.add(new LabelValueBean("UPS", "UPS")); shippers.add(new LabelValueBean("Federal Express", "FEDX")); shippers.add(new LabelValueBean("AirBorne", "AIRB")); request.setAttribute ("SHIPPERS",shippers); Then, on the page, you can iterate through the collection <logic:iterate id="row" name="SHIPPERS" type="org.apache.commons.scaffold.util.LabelValueBean"> <html:radio property="expectedVia" value="<%=row.getValue()%>"/> <bean:write name="row" property="label"/> </logic:iterate> So long as one of the values matches the "expectedVia" property on our ActionForm, the radio tag will still automatically select the appropriate button.