开发者

Overriding java tobago sheet sorting method does not show data

开发者 https://www.devze.com 2022-12-17 23:35 出处:网络
I have created a Java webapplication containing a tobago sheet. I am now trying to override the sorting mechanism of the sheet by using the sortActionListener attribute.

I have created a Java webapplication containing a tobago sheet. I am now trying to override the sorting mechanism of the sheet by using the sortActionListener attribute.

When I click on a column my sorting method is started. I can read out the column name and do some SQL stuff to get the data I would like to display now. The sorting is done due to the SQL query. The problem is, that the sh开发者_StackOverfloweet won't display the data, it's empty.

This is the error message I get:

org.apache.myfaces.custom.ajax.api.AjaxPhaseListener - Found component is no ajaxComponent

Has anybody an idea how to solve this? Does my sheet have to be something like ajax-enabled or what is wrong?

Thanks in advance!

UPDATE:

I have found out that the error message is due to a conflict between the tomahawk-sandbox library and tobago. After removing the sandbox lib, the error message disappears. Nevertheless I am still having problems with the view.

In case I step over the event handler manually everything works fine, since the jsp page will be reloaded after the eventhandler. This is perfect. BUT if I run the code on its own without performing a manual step over, the jsp page is NOT reloaded and therefore I can't see the data.

Why is this so and how can I persuade my code to refresh the jsp page and therefore the sheet? ;)


In order to show up the results it is neccessary to interact with the sheet itself - which somehow makes sense ;)

List<SheetData> sheetData = (List<SheetData>) sheet.getValue();

... performing SQL query ...

sheetData = sqlresult;

That's all ;) Get the value of the sheet, perform the SQL query and send the result to the sheetData object. The sheet will be refreshed when it's finished.

But I decided to get rid of the SQL query since it takes a lot of time (very huge and complex database, don't ask ...). I am now going the standward way by creating a comparator.

Comparator<SheetData> comparator = null;

comparator = new Comparator<SheetData> {

    public int compare(SheetData sd1, SheetData sd2) {

        int rc = 0;

        if (rc == 0) {
            rc = sd1.getString("Field").compareTo(sd2.getString("Field"));
        }

        if (rc == 0) {
            rc = sd1.getString("Field2").compareTo(sd2.getString("Field2"));
        }

        return rc;
    }
};

Collections.sort(sheetData, comparator);

The comparator can sort as many fields as I want and its fast ;) You can also see the sheet's state (ascending/descending) within the sortcolumn, which won't be shown with my first approach (SQL query).

0

精彩评论

暂无评论...
验证码 换一张
取 消