Version 2

    The following code caused me a lot of confusion:

     

    <h:form>

      <h:dataTable value="{accountService.things}" var="thing">

       <h:column>

         <f:facet name="header">Name</f:facet>

           <h:outputText id="name" size="10" required="true" value="{thing.name}">

           </h:outputText>

       </h:column>

                             <h:column>

                                  <f:facet name="header">Size</f:facet>

                                  <h:outputText id="size" size="10" required="true"

                                       value="{thing.size}">

                                  </h:outputText>

                             </h:column>

                             <h:column>

                                  <s:link value="Select"

                                       action="{accountService.selectThing(thing)}" />

                             </h:column>

                             <h:column>

                                  <h:commandButton value="Select"

                                       action="{accountService.selectThing(thing)}" />

                             </h:column>

                             <h:column>

                                  <s:link value="Select (dsm)"

                                       action="{accountService.selectThing()}" />

                             </h:column>

                             <h:column>

                                  <h:commandButton value="Select (dsm)"

                                       action="{accountService.selectThing()}" />

                             </h:column>

                        </h:dataTable>

     

                        <h:commandButton value="Show Choices"

                             action="{accountService.getThings()}" />

                   </h:form>