# 表单设计器高级操作 [TOC] ## 自定义接收URL 目的是为了让用户自定义接收数据的后台接口地址,你可以在你自己定义的接口里做数据处理,并保存到数据库。 支持事务控制 * 选择启动事务,接口失败则表单数据保存操作同步回滚。 * 关闭开启事务,接口失败则表单数据保存操作不回滚。 ![](https://img.kancloud.cn/43/1d/431d8ddef2377b0c51ebb0906882b60e_327x703.png) ### 配置方式 在“表单属性”最下方有一个“自定义接收URL”输入框,你可以输入你的后台API地址 ![](../images/screenshot_1576563546350.png) ### 接收规则 | 请求类型 | 操作 | |----------|------| | POST | 新增 | | PUT | 修改 | **可以通过请求类型的不同来判断当前是新增还是修改操作** 接收的参数均为一个 JSON 对象`@RequestBody JSONObject json` **注意**:如果只定义了`POST`方法而没有定义`PUT`方法,那么会在修改的时候报错,反之亦然。所以建议不要单独写`@PostMapping`或`@PutMapping`,而是写`@RequestMapping`来接收所有请求,在方法内进行判断请求类型,判断方式见下面的示例。 ### 返回规则 建议返回 `org.jeecg.common.api.vo.Result` 类,但如果想要自定义返回类型的话,则需要包含以下字段: | 字段名 | 类型 | 备注 | |---------|---------|--------------------------------------------| | success | Boolean | 如果请求成功,请返回`true`,否则将视为失败 | | message | String | 成功可不返回,若失败请返回失败的原因 | ### 参考示例 ![](../images/screenshot_1576564049499.png) ``` java /** * 自定义接收URL:将数据抽取到新的表单 * 【测试示例】 * @param json * @param request * @return */ @RequestMapping("/customUrlTest") public Result customUrlTest(@RequestBody JSONObject json, HttpServletRequest request) { boolean isPost = HttpMethod.POST.matches(request.getMethod()); // post 为新增,put为修改,这里只对新增数据做处理 if (isPost) { // 获取传递的 token String token = TokenUtils.getTokenByRequest(request); // 从传递进来的 formData 里抽取三个字段 JSONObject formData = json.getJSONObject("desformDataJson"); JSONObject staff = new JSONObject(); staff.put("name", formData.getString("name")); staff.put("sex", formData.getString("sex")); staff.put("age", formData.getString("age")); // 通过 RESTful 风格的接口保存数据 return RestDesformUtil.addOne("extract_test_staff", staff, token); } else { // 其他请求不做处理 return Result.ok(); } } ```