I'm very puzzled regarding the behaviour and interaction of the above
components. I have used them successfully in some contexts, but am having
problems with them in other contexts but can't see any pattern.
My understanding was that s:link is to be preferred over the non-Seam
h:commandButton but things do not seem to be quite that simple as this simple
example demonstrates:
| <rich:panel>
| <f:facet name="header">Why Doesn't This Work?</f:facet>
| <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>
| </rich:panel>
|
and the corresponding service class:
| @DataModel
| private List<Thing> things;
|
| @DataModelSelection("things")
| private Thing selectedThing;
|
| public List<Thing> getThings() {
| ThingRepository repository = new ThingRepository();
| things = repository.getThings();
| return things;
| }
|
| public String selectThing() {
| log.info("### DJF Selected: " + selectedThing);
| return null;
| }
|
| public String selectThing(Thing thing) {
| selectedThing = thing;
| log.info("### DJF Selected: " + selectedThing);
| return null;
| }
|
(yes I know I should use a static for the repository ...)
The repository spits out:
One_1
Two_22
Three_333
Four_4444
Five_55555
Size_666666
I then select the second, third, fourth and fifth lines (in that order) with
the following surprising (to me at least) results:
16:54:43,322 INFO [AccountService] ### DJF Selected: null
16:54:44,665 INFO [AccountService] ### DJF Selected: Three_333
16:54:45,931 INFO [AccountService] ### DJF Selected: One_1
16:54:47,353 INFO [AccountService] ### DJF Selected: One_1
One out of four is correct! Why null? Why does it incorrectly select the
first element when I have selected a different element?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4110928#4110928
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4110928
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user