NutzCN Logo
问答 EL 表达式对象取值问题
发布于 2064天前 作者 Hamming 1672 次浏览 复制 上一个帖子 下一个帖子
标签:

代码如下 获取参数为 数组 日志 存储了Java内存地址 该如何修改 让${args} 转string

	/**
	 * 删除系统参数
	 */
	@At("/remove")
	@Ok("json")
	@RequiresPermissions("sys:config:remove")
	@Slog(tag ="系统参数", after= "删除系统参数:${args}")
	public Object remove(@Param("ids")String[] ids, HttpServletRequest req) {
		try {
			configService.delete(ids);
			return Result.success("system.success",ids);
		} catch (Exception e) {
			return Result.error("system.error");
		}
	}
13 回复

hashcode不是内存地址。。。

噢噢 那 如何到对应的值呢 而不是hashcode

可以注册个EL函数

CustomMake.me().register("array2str", new RunMethod(){实现一下逻辑});

然后就可以在el里面调用 array2str方法了

对于EL 完全不懂 在哪里声明

CustomMake.me().register("array2str", new RunMethod(){实现一下逻辑});

MainLauncher.init里面注册一个函数而已

文档有的 http://nutzam.com/core/el/overview.html

这种全局的东西, 一般都是init方法里面注册, 然后到处可用

噢噢 这样写可以吗 fetchSelf 是做什么的

        CustomMake.me().register("array2str", new RunMethod(){

            @Override
            public Object run(List<Object> fetchParam) {
                return JSON.toJSONString(fetchParam);
            }

            @Override
            public String fetchSelf() {
                return null;
            }
        });

打印表达式的时候用到, 通过跟key一样

通常跟key一样

这样声明 使用吗${array2str.args}
@Slog(tag ="岗位", after= "删除岗位:${array2str.args}")
运行异常

这样声明
@Slog(tag ="字典", after= "删除字典:${args.array2str}")
异常信息

[DEBUG] 17:59:25.891 org.nutz.plugins.slog.aop.SlogAopInterceptor.doLog(SlogAopInterceptor.java:96) - slog fail
org.nutz.lang.FailToGetValueException: Fail to get value for [[Ljava.lang.Object;]->[array2str]
	at org.nutz.lang.Mirror.makeGetValueException(Mirror.java:790)
	at org.nutz.lang.Mirror.getValue(Mirror.java:852)
	at org.nutz.el.opt.object.AccessOpt.calculate(AccessOpt.java:46)
	at org.nutz.el.arithmetic.RPN.calculate(RPN.java:55)
	at org.nutz.el.arithmetic.RPN.calculate(RPN.java:38)
	at org.nutz.el.El.eval(El.java:33)
	at org.nutz.plugins.slog.service.SlogService.log(SlogService.java:263)
	at org.nutz.plugins.slog.aop.SlogAopInterceptor.doLog(SlogAopInterceptor.java:83)
	at org.nutz.plugins.slog.aop.SlogAopInterceptor.filter(SlogAopInterceptor.java:70)
	at org.nutz.aop.InterceptorChain.doChain(InterceptorChain.java:60)
	at io.nutz.nutzsite.module.sys.controllers.DictController$$NUTZAOP.remove(DictController.java:1)
	at io.nutz.nutzsite.module.sys.controllers.DictController$FM$remove$f71770db7ce0c6e7357ed2258a21ecce.invoke(DictController.java)
	at org.nutz.mvc.impl.processor.MethodInvokeProcessor.process(MethodInvokeProcessor.java:31)
	at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
	at org.nutz.mvc.impl.processor.AdaptorProcessor.process(AdaptorProcessor.java:38)
	at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
	at org.nutz.mvc.impl.processor.ActionFiltersProcessor.process(ActionFiltersProcessor.java:58)
	at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
	at org.nutz.integration.shiro.NutShiroProcessor.process(NutShiroProcessor.java:126)
	at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
	at org.nutz.mvc.impl.processor.ModuleProcessor.process(ModuleProcessor.java:123)
	at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
	at org.nutz.mvc.impl.processor.EncodingProcessor.process(EncodingProcessor.java:27)
	at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
	at org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor.process(UpdateRequestAttributesProcessor.java:15)
	at org.nutz.mvc.impl.NutActionChain.doChain(NutActionChain.java:44)
	at org.nutz.mvc.impl.ActionInvoker.invoke(ActionInvoker.java:67)
	at org.nutz.mvc.ActionHandler.handle(ActionHandler.java:31)
	at org.nutz.mvc.NutFilter.doFilter(NutFilter.java:202)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)

方法调用 array2str(args)

PS: @Ok/@Fail 也支持EL表达式

添加回复
请先登陆
回到顶部