thymeleaf ajax传两个值,如何将Params传递给Thymeleaf Ajax Fragment

我有一个Spring MVC控制器,它返回一个百万美元片段的名称来查看解析器bean.问题是这个片段需要一个url作为参数.在这里我把片段:

我无法获得传递该参数的方法而不会出现错误.

控制器如下:

@RequestMapping(method = RequestMethod.GET)

public String show(@CurrentUser User user, Model model) {

logger.info(user.toString());

if(!model.containsAttribute(BINDING_RESULT_NAME)) {

model.addAttribute(ATTRIBUTE_NAME, user);

}

model.addAttribute("url", "/admin/users/self/profile");

return "admin/fragments/user/personal::form-basic({url})";

}

对于上面的示例,我收到以下错误:

06-Jan-2017 11:36:40.264 GRAVE [http-nio-8080-exec-9] org.apache.catalina.core.StandardWrapperValve.invoke El Servlet.service() para el servlet [dispatcher] en el contexto con ruta [/ejercicio3] lanzó la excepción [Request processing failed; nested exception is java.lang.IllegalArgumentException: Invalid template name specification: 'admin/fragments/user/personal::form-basic({url})'] con causa raíz

java.lang.IllegalArgumentException: Invalid template name specification: 'admin/fragments/user/personal::form-basic({url})'

at org.thymeleaf.spring4.view.ThymeleafView.renderFragment(ThymeleafView.java:275)

at org.thymeleaf.spring4.view.ThymeleafView.render(ThymeleafView.java:189)

at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1257)

at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1037)

at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:980)

我做过这些测试:

"admin/fragments/user/personal::form-basic('{url}')";

"admin/fragments/user/personal::form-basic(@{/admin/users/self/profile})";

"admin/fragments/user/personal::form-basic(/admin/users/self/profile)";

"admin/fragments/user/personal::form-basic('/admin/users/self/profile')";

总而言之,我得到了错误

解决方法:

从控制器到Thymeleaf片段有两种传递参数的方法.首先是通常的Spring方式 – 抛出模型:

@RequestMapping(method = RequestMethod.GET)

public String show(@CurrentUser User user, Model model) {

model.addAttribute("url", "/admin/users/self/profile");

return "admin/fragments/user/personal::form-basic";

}

这就够了.在这种情况下,您不需要指定任何片段参数(即使您拥有它).

第二种方法是在片段名称中指定参数:

@RequestMapping(method = RequestMethod.GET)

public String show(@CurrentUser User user, Model model) {

String url = "/admin/users/self/profile";

return String.format("admin/fragments/user/personal::form-basic(url='%s')",url);

}

注意,必须指定参数名称,并且字符串值必须放在单引号中.在这种情况下,您不需要将url变量添加到模型中.

标签:spring,ajax,spring-mvc,thymeleaf

来源: https://codeday.me/bug/20190823/1701845.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值