You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Leonardo Uribe (JIRA)" <de...@myfaces.apache.org> on 2007/06/24 02:49:26 UTC

[jira] Created: (TOMAHAWK-1031) links from sortable table are not working (with TRINIDAD)

links from sortable table are not working (with TRINIDAD)
---------------------------------------------------------

                 Key: TOMAHAWK-1031
                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1031
             Project: MyFaces Tomahawk
          Issue Type: Bug
         Environment: windows xp, jboss 4.2.0.GA
            Reporter: Leonardo Uribe


When you mix trinidad and tomahawk CommandSortHeader component it not works.

I believe that I have found the reason. Take a look at this code
(please note only the part where _sortColumn and _sortAscending is set to null):

    /**
     * Specify what column the data should be sorted on.
     * <p/>
     * Note that calling this method <i>immediately</i> stores the value
     * via any value-binding with name "sortColumn". This is done because
     * this method is called by the HtmlCommandSortHeader component when
     * the user has clicked on a column's sort header. In this case, the
     * the model getter method mapped for name "value" needs to read this
     * value in able to return the data in the desired order - but the
     * HtmlCommandSortHeader component is usually "immediate" in order to
     * avoid validating the enclosing form. Yes, this is rather hacky -
     * but it works.
     */
    public void setSortColumn(String sortColumn)
    {
        _sortColumn = sortColumn;
        // update model is necessary here, because processUpdates is never called
        // reason: HtmlCommandSortHeader.isImmediate() == true
        ValueBinding vb = getValueBinding("sortColumn");
        if (vb != null)
        {
            vb.setValue(getFacesContext(), _sortColumn);
            _sortColumn = null;
        }

        setSortColumnIndex(columnNameToIndex(sortColumn));
    }

    public String getSortColumn()
    {
        if (_sortColumn != null) return _sortColumn;
        ValueBinding vb = getValueBinding("sortColumn");
        return vb != null ? (String) vb.getValue(getFacesContext()) : null;
    }

    public void setSortAscending(boolean sortAscending)
    {
        _sortAscending = Boolean.valueOf(sortAscending);
        // update model is necessary here, because processUpdates is never called
        // reason: HtmlCommandSortHeader.isImmediate() == true
        ValueBinding vb = getValueBinding("sortAscending");
        if (vb != null)
        {
            vb.setValue(getFacesContext(), _sortAscending);
            _sortAscending = null;
        }
    }

    public boolean isSortAscending()
    {
        if (_sortAscending != null)
            return _sortAscending.booleanValue();
        ValueBinding vb = getValueBinding("sortAscending");
        Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null;
        return v != null ? v.booleanValue() : DEFAULT_SORTASCENDING;
    }

If you set _sortColumn and _sortAscending variables to null, when this method is executed:

public Object saveState(FacesContext context)
{
/*.......*/
        values[5] = _sortColumn;
        values[6] = _sortAscending;
/*.......*/
}

the variables are saved as null!! (but the ValueBinding no)

If you remove this lines:

            _sortColumn = null;

and

            _sortAscending = null;

I probe it and it works well ( I think that this error is related to  TOMAHAWK-457)

Trinidad use its own StateManager impl. So I believe that this is the reason of TOMAHAWK-457 (RI has a different StateManagerImpl).

But I'm not sure if this should be done or something like this:

            _sortColumn = getValueBinding("sortColumn").getValue(getFacesContext());

What do you think in order to create a properly patch

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TOMAHAWK-1031) links from sortable table are not working (with TRINIDAD)

Posted by "Martin Marinschek (JIRA)" <de...@myfaces.apache.org>.
    [ https://issues.apache.org/jira/browse/TOMAHAWK-1031?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12513576 ] 

Martin Marinschek commented on TOMAHAWK-1031:
---------------------------------------------

I believe sortColumn and sortAscending are set to null so that you can change the values in the managed bean, so this is not the full solution - sorry!

regards,

Martin

> links from sortable table are not working (with TRINIDAD)
> ---------------------------------------------------------
>
>                 Key: TOMAHAWK-1031
>                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1031
>             Project: MyFaces Tomahawk
>          Issue Type: Bug
>         Environment: windows xp, jboss 4.2.0.GA
>            Reporter: Leonardo Uribe
>         Attachments: patch2.patch
>
>
> When you mix trinidad and tomahawk CommandSortHeader component it not works.
> I believe that I have found the reason. Take a look at this code
> (please note only the part where _sortColumn and _sortAscending is set to null):
>     /**
>      * Specify what column the data should be sorted on.
>      * <p/>
>      * Note that calling this method <i>immediately</i> stores the value
>      * via any value-binding with name "sortColumn". This is done because
>      * this method is called by the HtmlCommandSortHeader component when
>      * the user has clicked on a column's sort header. In this case, the
>      * the model getter method mapped for name "value" needs to read this
>      * value in able to return the data in the desired order - but the
>      * HtmlCommandSortHeader component is usually "immediate" in order to
>      * avoid validating the enclosing form. Yes, this is rather hacky -
>      * but it works.
>      */
>     public void setSortColumn(String sortColumn)
>     {
>         _sortColumn = sortColumn;
>         // update model is necessary here, because processUpdates is never called
>         // reason: HtmlCommandSortHeader.isImmediate() == true
>         ValueBinding vb = getValueBinding("sortColumn");
>         if (vb != null)
>         {
>             vb.setValue(getFacesContext(), _sortColumn);
>             _sortColumn = null;
>         }
>         setSortColumnIndex(columnNameToIndex(sortColumn));
>     }
>     public String getSortColumn()
>     {
>         if (_sortColumn != null) return _sortColumn;
>         ValueBinding vb = getValueBinding("sortColumn");
>         return vb != null ? (String) vb.getValue(getFacesContext()) : null;
>     }
>     public void setSortAscending(boolean sortAscending)
>     {
>         _sortAscending = Boolean.valueOf(sortAscending);
>         // update model is necessary here, because processUpdates is never called
>         // reason: HtmlCommandSortHeader.isImmediate() == true
>         ValueBinding vb = getValueBinding("sortAscending");
>         if (vb != null)
>         {
>             vb.setValue(getFacesContext(), _sortAscending);
>             _sortAscending = null;
>         }
>     }
>     public boolean isSortAscending()
>     {
>         if (_sortAscending != null)
>             return _sortAscending.booleanValue();
>         ValueBinding vb = getValueBinding("sortAscending");
>         Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null;
>         return v != null ? v.booleanValue() : DEFAULT_SORTASCENDING;
>     }
> If you set _sortColumn and _sortAscending variables to null, when this method is executed:
> public Object saveState(FacesContext context)
> {
> /*.......*/
>         values[5] = _sortColumn;
>         values[6] = _sortAscending;
> /*.......*/
> }
> the variables are saved as null!! (but the ValueBinding no)
> If you remove this lines:
>             _sortColumn = null;
> and
>             _sortAscending = null;
> I probe it and it works well ( I think that this error is related to  TOMAHAWK-457)
> Trinidad use its own StateManager impl. So I believe that this is the reason of TOMAHAWK-457 (RI has a different StateManagerImpl).
> But I'm not sure if this should be done or something like this:
>             _sortColumn = getValueBinding("sortColumn").getValue(getFacesContext());
> What do you think in order to create a properly patch

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TOMAHAWK-1031) links from sortable table are not working (with TRINIDAD)

Posted by "Martin Marinschek (JIRA)" <de...@myfaces.apache.org>.
    [ https://issues.apache.org/jira/browse/TOMAHAWK-1031?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12537916 ] 

Martin Marinschek commented on TOMAHAWK-1031:
---------------------------------------------

Hi Leonardo,

I'm still not sure about this. Maybe you could try to explain to me why it doesn't work with Trinidad (a bit more into detail than right now, with exactly what happens where in the lifecycle), and then we can find a solution together?

regards,

Martin

> links from sortable table are not working (with TRINIDAD)
> ---------------------------------------------------------
>
>                 Key: TOMAHAWK-1031
>                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1031
>             Project: MyFaces Tomahawk
>          Issue Type: Bug
>         Environment: windows xp, jboss 4.2.0.GA
>            Reporter: Leonardo Uribe
>         Attachments: patch2.patch, patch9sortColumnAscending1.patch
>
>
> When you mix trinidad and tomahawk CommandSortHeader component it not works.
> I believe that I have found the reason. Take a look at this code
> (please note only the part where _sortColumn and _sortAscending is set to null):
>     /**
>      * Specify what column the data should be sorted on.
>      * <p/>
>      * Note that calling this method <i>immediately</i> stores the value
>      * via any value-binding with name "sortColumn". This is done because
>      * this method is called by the HtmlCommandSortHeader component when
>      * the user has clicked on a column's sort header. In this case, the
>      * the model getter method mapped for name "value" needs to read this
>      * value in able to return the data in the desired order - but the
>      * HtmlCommandSortHeader component is usually "immediate" in order to
>      * avoid validating the enclosing form. Yes, this is rather hacky -
>      * but it works.
>      */
>     public void setSortColumn(String sortColumn)
>     {
>         _sortColumn = sortColumn;
>         // update model is necessary here, because processUpdates is never called
>         // reason: HtmlCommandSortHeader.isImmediate() == true
>         ValueBinding vb = getValueBinding("sortColumn");
>         if (vb != null)
>         {
>             vb.setValue(getFacesContext(), _sortColumn);
>             _sortColumn = null;
>         }
>         setSortColumnIndex(columnNameToIndex(sortColumn));
>     }
>     public String getSortColumn()
>     {
>         if (_sortColumn != null) return _sortColumn;
>         ValueBinding vb = getValueBinding("sortColumn");
>         return vb != null ? (String) vb.getValue(getFacesContext()) : null;
>     }
>     public void setSortAscending(boolean sortAscending)
>     {
>         _sortAscending = Boolean.valueOf(sortAscending);
>         // update model is necessary here, because processUpdates is never called
>         // reason: HtmlCommandSortHeader.isImmediate() == true
>         ValueBinding vb = getValueBinding("sortAscending");
>         if (vb != null)
>         {
>             vb.setValue(getFacesContext(), _sortAscending);
>             _sortAscending = null;
>         }
>     }
>     public boolean isSortAscending()
>     {
>         if (_sortAscending != null)
>             return _sortAscending.booleanValue();
>         ValueBinding vb = getValueBinding("sortAscending");
>         Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null;
>         return v != null ? v.booleanValue() : DEFAULT_SORTASCENDING;
>     }
> If you set _sortColumn and _sortAscending variables to null, when this method is executed:
> public Object saveState(FacesContext context)
> {
> /*.......*/
>         values[5] = _sortColumn;
>         values[6] = _sortAscending;
> /*.......*/
> }
> the variables are saved as null!! (but the ValueBinding no)
> If you remove this lines:
>             _sortColumn = null;
> and
>             _sortAscending = null;
> I probe it and it works well ( I think that this error is related to  TOMAHAWK-457)
> Trinidad use its own StateManager impl. So I believe that this is the reason of TOMAHAWK-457 (RI has a different StateManagerImpl).
> But I'm not sure if this should be done or something like this:
>             _sortColumn = getValueBinding("sortColumn").getValue(getFacesContext());
> What do you think in order to create a properly patch

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (TOMAHAWK-1031) links from sortable table are not working (with TRINIDAD)

Posted by "Leonardo Uribe (JIRA)" <de...@myfaces.apache.org>.
     [ https://issues.apache.org/jira/browse/TOMAHAWK-1031?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Leonardo Uribe updated TOMAHAWK-1031:
-------------------------------------

    Status: Patch Available  (was: Open)

> links from sortable table are not working (with TRINIDAD)
> ---------------------------------------------------------
>
>                 Key: TOMAHAWK-1031
>                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1031
>             Project: MyFaces Tomahawk
>          Issue Type: Bug
>         Environment: windows xp, jboss 4.2.0.GA
>            Reporter: Leonardo Uribe
>         Attachments: patch2.patch
>
>
> When you mix trinidad and tomahawk CommandSortHeader component it not works.
> I believe that I have found the reason. Take a look at this code
> (please note only the part where _sortColumn and _sortAscending is set to null):
>     /**
>      * Specify what column the data should be sorted on.
>      * <p/>
>      * Note that calling this method <i>immediately</i> stores the value
>      * via any value-binding with name "sortColumn". This is done because
>      * this method is called by the HtmlCommandSortHeader component when
>      * the user has clicked on a column's sort header. In this case, the
>      * the model getter method mapped for name "value" needs to read this
>      * value in able to return the data in the desired order - but the
>      * HtmlCommandSortHeader component is usually "immediate" in order to
>      * avoid validating the enclosing form. Yes, this is rather hacky -
>      * but it works.
>      */
>     public void setSortColumn(String sortColumn)
>     {
>         _sortColumn = sortColumn;
>         // update model is necessary here, because processUpdates is never called
>         // reason: HtmlCommandSortHeader.isImmediate() == true
>         ValueBinding vb = getValueBinding("sortColumn");
>         if (vb != null)
>         {
>             vb.setValue(getFacesContext(), _sortColumn);
>             _sortColumn = null;
>         }
>         setSortColumnIndex(columnNameToIndex(sortColumn));
>     }
>     public String getSortColumn()
>     {
>         if (_sortColumn != null) return _sortColumn;
>         ValueBinding vb = getValueBinding("sortColumn");
>         return vb != null ? (String) vb.getValue(getFacesContext()) : null;
>     }
>     public void setSortAscending(boolean sortAscending)
>     {
>         _sortAscending = Boolean.valueOf(sortAscending);
>         // update model is necessary here, because processUpdates is never called
>         // reason: HtmlCommandSortHeader.isImmediate() == true
>         ValueBinding vb = getValueBinding("sortAscending");
>         if (vb != null)
>         {
>             vb.setValue(getFacesContext(), _sortAscending);
>             _sortAscending = null;
>         }
>     }
>     public boolean isSortAscending()
>     {
>         if (_sortAscending != null)
>             return _sortAscending.booleanValue();
>         ValueBinding vb = getValueBinding("sortAscending");
>         Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null;
>         return v != null ? v.booleanValue() : DEFAULT_SORTASCENDING;
>     }
> If you set _sortColumn and _sortAscending variables to null, when this method is executed:
> public Object saveState(FacesContext context)
> {
> /*.......*/
>         values[5] = _sortColumn;
>         values[6] = _sortAscending;
> /*.......*/
> }
> the variables are saved as null!! (but the ValueBinding no)
> If you remove this lines:
>             _sortColumn = null;
> and
>             _sortAscending = null;
> I probe it and it works well ( I think that this error is related to  TOMAHAWK-457)
> Trinidad use its own StateManager impl. So I believe that this is the reason of TOMAHAWK-457 (RI has a different StateManagerImpl).
> But I'm not sure if this should be done or something like this:
>             _sortColumn = getValueBinding("sortColumn").getValue(getFacesContext());
> What do you think in order to create a properly patch

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.