Nutz视图重定向带操作结果参数的问题

发布于 2021-11-24 18:34:29 字数 1775 浏览 801 评论 4

根据文档说明,发现有这样的视图重定向功能.


给定参数

@Ok("redirect:/pet/detail.nut?pid=${obj.id}")
或者
@Ok("redirect:/article/2009/${articleId}.html")

视图会填充占位符号。填充的规则是:

  1. 如果占位符名称以 "obj." 开头,则表示应该用入口函数的返回对象的某一个字段来填充
    • "obj.name" 表示对象的 "name" 字段
  2. 如果占位符名称以 "p." 开头,,用 HTTP 参数表的值来填充
    • "p.abc" 就表示 HTTP 参数中的 "abc" 参数
  3. 如果参数表没有值,则直接用返回的对象来填充。



于是想用来做一个统一的操作提示页面,各操作Action成功时,redirect到这个msg.html页面,将操作结果做参数传递过去.如下:


@At({ "/admin/user/save" })
	@Ok("redirect:/msg.html?msgJson=${msgJson}")
	public String save(@Param("..") User user, HttpServletRequest req) {
		if (logger.isDebugEnabled()) {
			logger.debug(req.getRequestURI());
			logger.debug(user.toString());
		}
		userService.save(user);
		//保存失败
		MsgJsonVO  msgJson=new MsgJsonVO();
		if (StringUtils.isBlank(user.getId())) {
			logger.debug(user.toString());
			msgJson.setCode(MsgJsonVO.codeFail);
			msgJson.setMessage("保存失败了,请稍后再试.");
		}
		else {
			logger.debug(user.toString());
			msgJson.setCode(MsgJsonVO.codeSuccess);
		}
		String msgJsonStr = JSON.toJSONString(msgJson);
		logger.debug(msgJsonStr);
		return msgJsonStr;
	}



原本是想直接将 msgJson  对象做参数,发现似乎不行,于是就将其Json序列化成字符串,再通过 ?msgJson=${msgJson}

 传递,但是,结果还是没实现效果,操作结果URL的上msgJson参数没过去,如下:http://localhost:8080/t/msg.html?msgJson= 

不知道这个用法还有什么奥秘?

另外,以上函数能否直接返回MsgJsonVO对象,如果可以,是怎么使用?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

各自安好 2021-11-25 12:03:23

嗯,验证了,第三条规则是不生效,需要改改文档

柠檬 2021-11-25 09:08:43

咦,规则第三条没生效? 无论怎样,都希望楼主报个 issue 哦,看看是要改程序还是改文档

高跟鞋的旋律 2021-11-25 08:20:08

返回值,在@Ok/@Fail里面的名字是obj, 不是方法内部的临时变量的名字(在Java里面,这种名字可是不能取得到的.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文