首先让我警告读者不要将我传递给同构的任何链接,因为我很可能已经阅读过它,并且当我问这个问题时,我已经搜索了本地运行的 smartgwt 展示。我问的内容没有记录,如果有,我无法破译,需要在这里进行实际解释。不,不要告诉我有关 SmartGWT EE 的信息。这个案例纯粹是 Smartclient 在服务器端与我的 JSP(或 perl、php)交互,我用它来与 SAS 后端交互。
这个问题与如何操作SAS无关。我提到 SAS 是为了说明 smartclient 必须直接与 SAS Web 服务交互,而不是通过 SmartGWT 服务器。我在 smartclient 论坛上问了一个类似但不同的问题,但仍然没有答案,所以这一定是一个非常困难的主题,甚至可能同构的人都没有答案。
我有
- 从 SAS Web 服务 sasxjsondsrc 生成的 JSON xjsondatasource url。我在 Jetty 上用 JSP 模拟它。
- sasxjsondsrc = id(primaryKey),名称,描述。
- 其 datasrc 设置为 sasxjsondsrc 的 ListGrid。
- SearchForm/DynamicForm editForm,其 datasrc 设置为 sasxjsondsrc。
我需要
- 用户将在 listGrid 上直观地选择一行,然后单击 del 按钮,我的代码将触发 listGrid.removeSelectedData(),然后它将仅在本地删除该行,并将要删除的参数 id=id 发送到 sasxjsondsrc url,操作=删除。
- 用户将在 listGrid 上直观地选择一行,然后单击修改按钮,我的代码将 editForm.editSelectedData()。当用户按下保存编辑按钮时,我的代码将触发 editForm.saveData(),然后它将在本地修改该行并将参数 id=id、name=modified-value、description=modified-description 发送到 sasxjsondsrc url操作=MOD。
- 用户将单击添加按钮,我的代码将触发 editForm.saveData(),然后将在本地附加该行并将参数 name=new-name、description=new-description、operation=ADD 发送到 sasxjsondsrc url。
这种本地服务器管理是 smartclient 宣传自己的优势。问题是
- 我的 JSP 没有注册 smartclient 发送任何参数来指示应该执行什么操作。它只接收数据源字段=值作为受影响记录的参数。
- 记录不会在本地附加或修改以进行添加或编辑操作。
- 为了克服问题(1),我尝试提供一个额外的非显示数据源字段,称为操作。但是当动态表单绑定到该数据源时,动态表单字段将不允许我以编程方式成功修改操作字段。
- 我尝试将操作作为 DSRequest 附加,但我的 JSP 也没有收到它。
我的 JSP 如何知道正在执行什么操作(添加/删除/编辑)?
好的,长话短说——SmartGWT 中的数据源是一项非常棘手的业务。有人建议我仅将 SmartGWT 用于它的 UI,但我应该避免使用 SmartGWT 数据源,因为它太难处理了。可以发一些帖子或将我链接到您如何在类似于我的配置中进行 SmartGWT 客户端编程的示例。
我应该恢复使用 GWT 2.1M3 单元格/页面架构并编写自己的 rpc-table 单元格表单链接吗?