[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-1161) s:link breaks @DataModelSelection functionallity, when having a page action

Daniel Wiell (JIRA) jira-events at lists.jboss.org
Tue Apr 10 12:08:14 EDT 2007


s:link breaks @DataModelSelection functionallity, when having a page action
---------------------------------------------------------------------------

                 Key: JBSEAM-1161
                 URL: http://jira.jboss.com/jira/browse/JBSEAM-1161
             Project: JBoss Seam
          Issue Type: Bug
    Affects Versions: 1.2.1.GA
         Environment: Seam 1.2.1.GA, MyFaces 1.1.6 nighly from march, Facelets 1.1.11
            Reporter: Daniel Wiell


If a s:link is used to select a row in a dataTable. A field annotated with @DataModelSelection always get the first row of the dataModel **if** the view has a page action. When the page action is removed or a regular h:commandLink is used, everything works as expected.

Here are some code to help reproducing this:
------------------------ The controller
@Name("fruitStore")
public class FruitStore {
    public static final List<Fruit> FRUITS = Arrays.asList(
            new Fruit(1, "Apple", "Red"),
            new Fruit(2, "Pear", "Green"),
            new Fruit(3, "Orange", "Orange"),
            new Fruit(4, "Banana", "Yellow"));

    @DataModel(scope = ScopeType.PAGE)
    private List<Fruit> fruits = FRUITS;
    @DataModelSelection
    private Fruit selectedFruit;

    public Fruit getSelectedFruit() { return selectedFruit; }

    public String init() { return null; }
}


------------------------ The domain object
public class Fruit {
    private long id;
    private String name;
    private String color;

    public Fruit(long id, String name, String color) {
        this.id = id;
        this.name = name;
        this.color = color;
    }

    public long getId() { return id; }
    public void setId(long id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getColor() { return color; }
    public void setColor(String color) { this.color = color; }
}


------------------------ Relavant parts from pages.xml
    <page view-id="/fruitSelection.xhtml" action="#{fruitStore.init}">
        <navigation>
            <rule if-outcome="selectFruit">
                <begin-conversation/>
                <redirect view-id="/fruitOverview.xhtml">
                    <param name="fruitId" value="#{fruitStore.selectedFruit.id}"/>
                </redirect>
            </rule>
        </navigation>
    </page>


------------------------ fruitSelection.xhtml
<?xml version='1.0' encoding='UTF-8'?>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:s="http://jboss.com/products/seam/taglib">
<head></head>
<body>
<h:form>
    Select a fruit: 
    <h:dataTable var="fruit" value="#{fruits}">
        <h:column>
            <!-- The page action (action="#{fruitStore.init}") breaks the @DataModelSelection
                 functionallity. It always get the first row.
                 When removing the page action everything works -->
            <s:link value="#{fruit.name}" action="selectFruit"/>
        </h:column>
        <h:column>
            <!-- This works -->
            <h:commandLink value="#{fruit.name}" action="selectFruit"/>
        </h:column>
    </h:dataTable>
</h:form>
</body>

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list