Java 如何改进ListGrid服务器连接/数据源的SmartGWT LGPL实现?

Java 如何改进ListGrid服务器连接/数据源的SmartGWT LGPL实现?,java,tomcat,datasource,smartgwt,listgrid,Java,Tomcat,Datasource,Smartgwt,Listgrid,要扩展我的问题,可以说我想在SmartGWT中编程,而不是在SmartGWT()中编程 我有一个2列的ListGrid,由5列数据库表中的数据填充。我不使用数据源(稍后将详细介绍),而是从异步服务获取数据,并在成功时填充它,如下所示predmetiGrid.setData(predmetecord.convertToContractRecordArray(result))。用户可以编辑数据并按下保存按钮保存数据。我实施save的方式是: // repeat this for each edite

要扩展我的问题,可以说我想在SmartGWT中编程,而不是在SmartGWT()中编程

我有一个2列的ListGrid,由5列数据库表中的数据填充。我不使用数据源(稍后将详细介绍),而是从异步服务获取数据,并在成功时填充它,如下所示
predmetiGrid.setData(predmetecord.convertToContractRecordArray(result))。用户可以编辑数据并按下保存按钮保存数据。我实施save的方式是:

// repeat this for each edited field 
for (int i=0; i < predmetiGrid.getAllEditRows().length; i++){

        int editedRowIndex = predmetiGrid.getAllEditRows()[i];

        // for each edite get the full record

        PredmetRecord editedRecord = (PredmetRecord)predmetiGrid.getRecord(editedRowIndex);

        // create a new DomainObject - Predmet, and set the ID from the 
        // Row so I have the ID to use for update later

        Integer predmetID = editedRecord.getAttributeAsInt("predmetID");
        Predmet predmet = new Predmet(predmetID);

        // fill Predmet object with either the edited value, or the
        // original value (if only one of the fields was changed and not both)

        String editedNazivPredmeta = (String)predmetiGrid.getEditValues(editedRecord).get("nazivPredmeta");
        boolean isNazivChanged = editedNazivPredmeta != null;
        if (!isNazivChanged){
            editedNazivPredmeta = editedRecord.getAttribute("nazivPredmeta");
        } 
        predmet.setNazivPredmeta(editedNazivPredmeta);

        String editedOpisPredmeta = (String) predmetiGrid.getEditValues(editedRecord).get("opisPredmeta");
        boolean isOpisChanged = editedOpisPredmeta != null;
        if (!isOpisChanged){
            editedOpisPredmeta = editedRecord.getAttribute("opisPredmeta");
        }
        predmet.setOpisPredmeta(editedOpisPredmeta);

        predmetiList.add(predmet);

    }
//对每个编辑的字段重复此操作
对于(int i=0;i
在另一种方法中,我调用异步服务:

public void updatePredmeti(List<Predmet> predmeti) throws RpcException, IllegalArgumentException {

    for (int i=0; i<predmeti.size();i++){
        JdbcPredgledPredmetaDAO.getInstance().updatePredmet(predmeti.get(i));
    }

}
public void updatePredmeti(List predmeti)抛出RpcException、IllegalArgumentException{

对于(int i=0;i您可以使用自定义Datasource.Datasource.setDataFormat(DSDataFormat.custom)。使用此设置,数据源将不会处理响应,而必须使用transformResponse()解析它。

您可以使用RpcDataSource。web上有一些示例。我不理解您在c点中的意思)。对于b点也不清楚,如果通过异步传输记录列表,则所有插入作业都在服务器端完成,因此如果出现一个错误,则执行必要的操作并引发异常。您将在异步失败时处理它…对于c点,我的意思是,我认为我没有使用最佳做法,并且希望了解m、 对于b点,我说的是数据库回滚。如果我有3个更新,而第二个更新失败,我需要回滚第一个更新。谢谢,我将对此进行研究。