You need to enable JavaScript to run this app. Domino子表单提交搜索请求后Java Agent无法获取搜索词字段值的问题
优惠活动
大模型
产品
解决方案
定价
更多

Domino子表单提交搜索请求后Java Agent无法获取搜索词字段值的问题

问题根因

你看到的Bsearchterm参数名,是Domino HTTP引擎自动生成的,不是前端表单传出来的原始值。

Domino引擎处理请求参数时,会按以下规则把参数映射到上下文文档的Item里:

  • 属于引擎内置保留参数的(比如OpenDocument、SearchTop),直接映射为文档Item,不需要目标表单提前定义对应域,这也是你能正常取到这两个值的原因
  • 参数名和请求目标表单上预先定义的Notes域完全匹配的,直接映射到对应域,不添加任何前缀
  • 既不是内置保留参数,也没匹配到表单上已定义域的参数,引擎会根据参数类型自动加固定前缀,拼接成合成字段名存入上下文文档:普通文本类参数加B前缀,整数类加I前缀,时间类加T前缀

你现在的情况就是,前端传的searchterm参数,既不是Domino内置保留参数,search-results对应的目标表单上又没提前定义同名的searchterm文本域,所以引擎自动把参数拼接成了Bsearchterm的合成字段名。你之前代码里判断文档有没有searchterm字段自然拿不到值。

落地解决方法
  • 最省事的方案:在search-results所属的表单上,加一个名字完全叫searchterm的文本域,不需要在页面上显示出来,只要表单存在这个域定义就行。加完之后引擎收到同名参数会直接匹配到这个域,不会再加前缀,你原有代码逻辑完全不用改就能正常取到值。
  • 不想改表单定义的话,可以直接取引擎生成的合成字段值,把原有取searchterm的代码换成读Bsearchterm即可:
    // 适配当前合成字段的取值逻辑
    String searchString = curdoc.hasItem("Bsearchterm") ? curdoc.getItemValueString("Bsearchterm") : "";
    
  • 想彻底不受引擎前缀规则影响的话,可以直接从原始HTTP请求中拿参数值,绕开Domino的文档映射逻辑:
    // 直接读取原始请求的参数,不管引擎后续怎么改字段名
    String searchString = session.getHttpServletRequest().getParameter("searchterm");
    

踩坑提醒:别想着改前端input的name去适配这个B前缀,这个前缀是引擎后端自己拼的,前端传的还是searchterm,改前端名字解决不了问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 07:06:04