当前位置: 首页 > 知识库问答 >
问题:

在Aspect内的json响应中放入一些变量

司寇山
2023-03-14

我们想在json响应中添加一些变量,但是内部方面。

我们有以下方面:

@Aspect
@Component
public class GetAyudaIconsAspect {

private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private IAyudasService ayudasService;

@After(value = "@annotation(com.stacks.annotations.GetAyudaIcons)")
public void getAyudaLinks(JoinPoint joinPoint) {

    MethodSignature signature = (MethodSignature) joinPoint.getSignature();
    Method method = signature.getMethod();
    GetAyudaIcons getAyudaIconAspect = method.getAnnotation(GetAyudaIcons.class);
    logger.debug("· [codigoAyuda] " + getAyudaIconAspect.codigoAyuda());
    if(getAyudaIconAspect.codigoAyuda()!=null) {
         HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
         List<LinkGuiaRapida> listaLinks=ayudasService.getLinksGuiaRapidaByCodigoGuiaRapida(getAyudaIconAspect.codigoAyuda());
         if(listaLinks != null && listaLinks.size()>0) {
             req.setAttribute(KMITAyudaIcons.TIENE_LINKS, true);
             req.setAttribute(KMITAyudaIcons.LISTA_LINKS_AYUDA, listaLinks);
         }
         
    }

}
}

我们需要做一些类似于在这个函数中所做的事情,但不是请求,而是响应。

我们想要注入方面的方法是:

@RequestMapping(value = { "/paciente/{id}/its.json" })
@GetAyudaIcons(codigoAyuda=KMITAyudaIcons.FICH_ASE_PROCESOS)
public @ResponseBody Map<String, Object> getITsDelPaciente(ModelMap model,
        @PathVariable("id") Long idPac,
        @RequestParam(value = KMIT.LIMIT, required = false) Integer limit,
        @RequestParam(value = KMIT.START, required = false) Integer start,
        @RequestParam(value = K.SORT, required = false) String fieldSort,
        @RequestParam(value = K.DIR, required = false) String directionSort,
        @RequestParam(value = "showTotal", required = false) boolean showTotal,
        @RequestParam(value = "anulada", required = false) String anulada) {

    Map<String, Object> response = new HashMap<>();
    
    PacienteTabForm ptf = getPacienteTabFormFromBreadCrumb();
    ptf.setId(idPac);
    ptf.setAnulada(anulada);
    ptf.setStart(start);
    ptf.setLimit(limit);
    setToBreadCrumb(ptf); 
    
    Map<String, Object> filtros = new HashMap<>();
    filtros.put("idPaciente", idPac); 
    filtros.put("anulada", anulada);
    if (StringUtils.isNotBlank(fieldSort)) {
        filtros.put(K.SORT, fieldSort);
        filtros.put(K.DIR, AbstractExtTableForm.DIR_DESC.equals(directionSort) ? OrderDir.DESC : OrderDir.ASC);
    }
    List<HciIts> its = itService.getAllIts(filtros, new RowBounds(start, limit + 1));
    
    long totalCount = showTotal ? itService.getAllItsCount(filtros) : (its.size() > limit ? Integer.MAX_VALUE : start + its.size());
    pagination(response, its, totalCount, start, limit);
    
    response.put(KMITResponse.INCAPACIDAD_TEMPORAL, its.stream()
                                                     .map(it -> ListadoITvo.build(it, itService.getDiagnosticosIT(it.getId())))
                                                     .collect(Collectors.toList()));
    return response;
}

共有1个答案

夔波
2023-03-14

你想知道确切的方向吗?如果方向正确,则使用自定义注释对方法进行注释,以消除模式,并执行以下操作:

@AfterReturn(value = "@annotation(FQAnnotationName)", returning="mapOfValues")
public Map<String, Object> afterReturningOnSomething(Map<String,Object> mapOfValues){
   mapOfValues.put("someKey","someValue");
   return mapOfValues;
}

这只是一个近似的解决方案,不要将其判断为您所需的精确实现。

 类似资料:
  • 我正在尝试配置Wiremock映射,以从请求中返回一个带有值的JSON响应。 请求很简单 它的映射是: 我收到回复: 而预期的是: 如果我切换到XML请求,模式

  • 我是新来的,请放心。我尝试了下面的代码来获得响应 这是json响应 如何计算id或列表的大小。帮助我。

  • 我想将URL放入中。 我允许用户在我的门户中选择他们的主页(只要他们在主页上显示任何不必要的内容),并且我将这个值放在我的user表的一列中。 只要此列为空,我就会显示一个模式来选择它的主页。因此,一旦连接返回“success”,我就会重定向到正确的页面,但我无法在中传递具有列中值的变量(例如:)。 下面是我的代码: 我的变量出错,这是一条消息: 名称“url”在当前上下文中不存在

  • 我正在powershell中编写一个小脚本,希望以特定格式构建一个变量。 当我打印该值时,该值显示为- 我希望输出是- 在这种情况下,如何将变量值放在“”(双引号)内。

  • 我想解析我的JSON响应来验证我获得的响应。 现在,我正在为此使用Rest-放心java API,我通过了关于工具QA和他们正在使用的教程 对于Json:- 现在这个响应是一个JSON对象。但我的嵌套在JSON数组中。 如何解析这些嵌套的Json对象和数组?因为Json响应可以出现在数组和对象的所有组合中。 它们是提供与键相对应的值的可靠方法吗?例:“key”:“value”我去找key,通过那个