You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Alfresco中通过Ajax请求向Webscript传递数据?

在Alfresco 5.2的Java WebScript中获取前端JSON请求参数

解决方案步骤

1. 核心思路

前端通过jsonPost发送的是JSON格式的请求体,无法通过常规的request.getParameter()获取参数,需要直接读取请求体内容并解析JSON,从中提取url值。

2. 修改Java WebScript类代码

更新你的SaveSearchResultsScript类,添加请求体读取和JSON解析逻辑:

import org.json.JSONObject;
import org.springframework.extensions.webscripts.DeclarativeWebScript;
import org.springframework.extensions.webscripts.WebScriptRequest;
import org.springframework.extensions.webscripts.Status;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class SaveSearchResultsScript extends DeclarativeWebScript {

    @Override
    protected Map<String, Object> executeImpl(WebScriptRequest request, Status status) {
        Map<String, Object> model = new HashMap<>();
        String requestBody = "";

        // 读取POST请求体的原始内容
        try (BufferedReader reader = request.getContent().getReader()) {
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }
            requestBody = sb.toString();
        } catch (IOException e) {
            status.setCode(Status.STATUS_BAD_REQUEST);
            status.setMessage("读取请求体失败");
            status.setException(e);
            return model;
        }

        // 解析JSON并提取url参数
        try {
            JSONObject jsonObject = new JSONObject(requestBody);
            String url = jsonObject.getString("url");
            
            // 这里可以添加你的业务逻辑,比如将URL保存到Alfresco节点或数据库
            System.out.println("收到的URL: " + url);
            model.put("data", "URL已成功保存: " + url);
            
        } catch (Exception e) {
            status.setCode(Status.STATUS_BAD_REQUEST);
            status.setMessage("JSON格式无效");
            status.setException(e);
        }

        return model;
    }
}

3. 关键细节说明

  • 请求体读取:通过request.getContent().getReader()获取请求输入流,逐行读取拼接成完整的JSON字符串。
  • JSON解析:使用Alfresco内置的org.json.JSONObject工具类解析请求体,直接通过getString("url")获取前端传入的URL值。
  • 异常处理:针对IO异常和JSON解析异常设置对应的HTTP状态码,便于前端定位问题。

4. 验证返回结果

前端的successCallback会接收到你在model中放入的data字段,对应FTL模板的输出内容,你可以在浏览器控制台看到返回的成功提示。

内容的提问来源于stack exchange,提问作者Mike1988B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:34:59