Re[8]: Grails
От: unreger  
Дата: 10.04.08 09:37
Оценка:
Здравствуйте, mi45, Вы писали:

M>Здравствуйте, BAKAB, Вы писали:


BAK>>Здравствуйте, unreger, Вы писали:


U>>>За неделю слегка поразбирался с контролами.

U>>>Но теперь не совсем понятно как совмещаются controller от grails и java-класс от gwt-ext для страницы.

BAK>>Тот же этот вопрос меня мучает.

BAK>>В своем проекте использую контроллер только для того, чтобы определить какое gwt приложение показывать.
BAK>>Передачу параметров в gwt-приложение осуществляю через json объекты или ajax (GWT-RPC)

M>Решение здесь: http://geekyryan.blogspot.com/2007/12/gwt-ext-and-grails-just-works.html


Спасибо за ссылку, хотя и тяжело читается.
Там используется RequestBuilder и RequestCallback из gwt,
НО, можно ведь сделать:


   def listJSON = {
        def testList = Test.list()
        render(builder: 'json') {
            totalCount(testList.size())
            data {  //data - название секции (произвольное) в json документе
                for (t in testList) {
                    test(strField: t.strField, intField: t.intField)
                }
            }
        }
    }



public void onModuleLoad() {
        //вывод таблицы с использованием json из контроллера
        Panel panel = new Panel();
        panel.setBorder(true);
        panel.setPaddings(15);
        panel.setWidth(700);
        panel.setHeight(500);
        panel.setBodyBorder(true);

        HttpProxy dataProxy = new HttpProxy("/nb-gwt/test/listJSON");
        RecordDef recordDef = new RecordDef(
                new FieldDef[]{
                        new StringFieldDef("strField"),
                        new IntegerFieldDef("intField")
                }
        );

        JsonReader reader = new JsonReader(recordDef);
        reader.setRoot("data");
        reader.setTotalProperty("totalCount");

        final Store store = new Store(dataProxy, reader, true);
        store.load();

        ColumnModel columnModel = new ColumnModel(new ColumnConfig[]{
                new ColumnConfig("Строка", "strField", 100, true),
                new ColumnConfig("Число", "intField", 75, true)
        });


        GridPanel grid = new GridPanel();
        grid.setStore(store);
        grid.setColumnModel(columnModel);
        grid.setWidth(375);
        grid.setHeight(350);
        grid.setTitle("Json Grid");
        grid.setFrame(true);
        grid.stripeRows(true);
        grid.setIconCls("grid-icon");
        panel.add(grid);

        RootPanel.get().add(panel);
}


это работает, чуть позже проверю, работает ли submit и надо ли принимать в контроллере именно JSON

        // из http://www.gwt-ext.com/demo/#loadSubmitXmlForm:
        final Button submitBtn = new Button("Submit", new ButtonListenerAdapter() {
             public void onClick(Button button, EventObject e) {
                 /*formPanel.getForm().submit("data/xml-errors.xml", null, Connection.GET,
                                             "Saving Data...", false);*/

                 formPanel.getForm().submit("/nb-gwt/test/saveJSON"); //обращаемся к action saveJSON от TestController
             }
         });
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.