我使用Spring/SpringMVC 5.x版本,在Tomcat服务器上使用Thymeleaf和Bootstrap。
我需要问一些问题,也许在你看来,这是个"st@pid“问题。
在我的html视图中,我有以下按钮或链接:
<input type="button" .../>
<a .../>我不需要提交一些东西,所以我只是使用一个简单的按钮,所以我认为我不需要任何形式(除非我需要这个)。
在这个html视图中(因为我在html标记中添加了thymeleaf库),我需要以某种方式(但我不知道如何)将Spring EL或Thymeleaf EL的表达式添加到这个按钮或链接中,这样我就可以从Spring调用一个方法,该方法是通过我在控制器中添加的模型在视图中传递的,例如:
${myBean.doSomething()
// or
${myBean.doSomething(parameters)如果这不是可以理解的,我可以用一些代码更新我的问题(我相信Spring开发人员理解我在说什么)。
我不知道怎么传递这个表达式。按钮或链接标签的属性是什么?我对按钮使用了"action“属性:
<input type="button" th:action="${myBean.doSomething()".../>或者链接标签中的"href“属性:
<a th:href= "${myBean.getStringUrlAndDoSomething()"/>非常重要的信息
当我启动运行页面的tomcat时,EL中的操作将在页面加载时成功地运行。当我按下按钮或链接时,什么也没有发生。
我知道我不能使用"onclick“属性,因为我们在那里编写JS代码。但是我需要运行代码。
对解决我的问题有什么想法吗?提前感谢
发布于 2021-12-17 13:38:41
我听从了@M.Deinum的建议,@Wim,我没有使用按钮来完成这项工作。按钮需要一个表单才能工作。
这就是为什么我使用了一个链接,其中调用来自bean的方法就像一个咒语,如下面的片段:
<div class="blabla">
<div class="blablabla" th:text="|#{change_lang} EN/GR:|"></div>
<a class="bla" th:href="${localeService.switchLocale()}">
<div th:class="|${localeService.loadCss()}_blabla|"></div>
</a>
<span th:text="${#locale.getLanguage()}"></span>
</div>下一个是来自bean的片段:
public String switchLocale() {
locale = LocaleContextHolder.getLocale();
if (locale.getLanguage().equals("en")) {
LocaleContextHolder.setLocale(EN_LOCALE);
return "?lang=el";
} else if (locale.getLanguage().equals("el")) {
LocaleContextHolder.setLocale(GR_LOCALE);
return "?lang=en";
} else {
return "";
}
}因此,可以成功地调用bean中的代码。我想这就是解决我的问题的办法。
非常感谢为我提供建议的2个人@M.Deinum @Wim。
https://stackoverflow.com/questions/70356058
复制相似问题