sap-cloud-sdk - 错误“无法使用请求路径构造 OData 请求的 URI”SAP Java VDM withQueryParameter
问题描述
我使用 SAP SDK 3.29.1 在 Java 中创建了一个 CAP VDM。在事件处理程序@On read 中,我想将输入过滤器传递给 VDM。
埃斯。
@On(event = CdsService.EVENT_READ, entity = "XXXX")
public void readXXX(CdsReadEventContext context) throws ODataException {
final String filter = context.getParameterInfo().getQueryParameter("$filter");
final List<XXXXX> dati = new DefaultXXXService().getAllXXXX().select().withQueryParameter("$filter", filter).executeRequest(dest);
}
在日志中运行查询时,我收到错误消息:“无法使用请求路径为 OData 请求构造 URI ...”“索引 95 处的查询中存在非法字符 ....”
但是路径和过滤器适合调用,你能帮我吗?
在旧版本的 sdk 中,我使用了:
FilterExpression filtriFrontEnd =FilterExpressionConverter.convertTo(queryRequest.getQueryExpression());
final List<XXXX> area = new DefaultXXXXService().getAllXXX().filter(new UncheckedFilterExpression<>(filtriFrontEnd)).select().execute(new ErpConfigContext("XXX"));
谢谢你。
解决方案
在日志中运行查询时,我收到错误消息:“无法使用请求路径为 OData 请求构造 URI ...”“索引 95 处的查询中存在非法字符 ....”
您可以检查以下是否适合您..?
import com.sap.cloud.sdk.datamodel.odata.client.request.ODataUriFactory;
final String filter = context.getParameterInfo().getQueryParameter("$filter");
final String encodedFilter = ODataUriFactory.encodeQuery(filter);
final List<XXXXX> dati = new DefaultXXXService().getAllXXXX().select().withQueryParameter("$filter", encodedFilter ).executeRequest(dest);
请让我知道,因为这可能是一个需要解决的问题。
推荐阅读
- react-native - 不能在样式组件中使用全局样式
- javascript - 实现全面快速路由解决方案后获取 API 调用失败:位置 0 处的 JSON 中的意外令牌 <
- maven - 具有自定义 settings.xml 的 Jenkins 声明式管道
- ios - 成功登录 Firebase 后尝试执行 segue
- ios - 使 .scn 模型具有前置摄像头视图
- swift - Swift 线程:何时使用 DispatchQueue.main.async?
- excel - 用于在图表上逐月显示的旋转按钮
- python - 在 pymunk 中旋转一组物体
- python - 如何使文本小部件静态
- python - sys.stderr 中何时不存在“isatty()”属性?