首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Varargs在thymeleaf @ModelAttribute?

Varargs在thymeleaf @ModelAttribute?
EN

Stack Overflow用户
提问于 2017-08-11 15:26:30
回答 2查看 471关注 0票数 0

我希望将@ModelAttribute计算的多个变量参数(包括无变量)从html胸腺网页传递给方法:

代码语言:javascript
复制
//provide 0 or X params
@ModelAttribute("url")
public String url(String... params) {
    return "generatedurl";
}

以下胸腺生长因子的陈述应该是可能的:

代码语言:javascript
复制
th:href="@{${url()}"
th:href="@{${url('page')}}"
th:href="@{${url('page', 'sort')}}"

但不起作用。为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-14 07:46:08

作为一种解决办法:添加封装类作为模型参数,并从thymeleaf中调用这个param的方法:

代码语言:javascript
复制
@Controller
public class PageController {
    @GetMapping
    public String persons(Model model) {
        model.addAttribute("util", this);
        return "persons";
    }

    public String url(String... params) {
        //evaluate...
        return "generatedurl";
    }
}

然后可以正常地访问这些方法:

代码语言:javascript
复制
th:href="@{${url()}"
th:href="@{${url('page')}}"
th:href="@{${url('page', 'sort')}}"

当然,唯一的缺点是必须向模型显式添加类。

另一个选择是用我需要的参数排列初始化模型。但这不那么灵活:

代码语言:javascript
复制
@ModelAttribute
public void init(Model model) {
    model.addAttribute("plainUrl", ...);
    model.addAttribute("pageUrl", ...);
    model.addAttribute("pageSizeUrl", ...);
}
票数 0
EN

Stack Overflow用户

发布于 2017-08-13 14:08:32

@ModelAttribute用于将公共对象绑定到模型。

每次从带有generatedurl注释的方法url()中返回一个字符串@ModelAttribute。所以每次你做${url}时,在你的胸腺视图中,你都会得到generatedurl

解决你的问题的一个方法可能是这样

代码语言:javascript
复制
@ModelAttribute("url")
public void url(Model model) {
    model.addAttribute("url","YOUR_URL");
    model.addAttribute("sort","age");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45638756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档