在java spring boot中如何使用thymeleaf将表单动作作为函数传递,如何将表单动作解析为函数

时间:2015-11-21 12:16:35

标签: javascript java spring forms

在我的春季启动应用程序中,我需要提交一个表单,表单操作应该是一个函数。这是我试过的代码:

提交表单的html代码:

<form role="form" id="form_id" data-parsley-validate="" novalidate=""
                        class="mb-lg" th:action="get_action()" method="get">

javascript函数:

function get_action(){
    $("#form_id").attr("action"); //Will retrieve it

    $("#form_id").attr("action", "@{/changePassword1}"); //Will set it

}

这是我得到的错误 “出现意外错误(类型=内部服务器错误,状态= 500)。 无法解析为表达式:“get_action()”(admin:55)“

我该如何解决这个问题,以便我可以将表单操作作为函数传递?

1 个答案:

答案 0 :(得分:0)

你搞砸了,thymeleaf正在服务器端呈现视图,javascript在客户端执行,th:action期望得到一些主题表达式(e.q @ {/ changePassword1})。

如果你想使用javascript更改动作网址,你需要将此脚本放在底部标签的某个html文件中,以便百万富翁可以呈现你的百万富翁变量。

你需要在某处调用你的javascript url更改,我不知道是什么原因(你没有指定)url更改所以我猜它可以在页面加载后调用(eq jQuery $(document)。 ready())或由某些事件(按钮点击)引起的

修改

     <form role="form" id="form_id" data-parsley-validate="" novalidate=""
                            class="mb-lg" th:action="@{/changePassword}" method="get">

和你修改过的例子js

<script>
$(function(){
    function get_action(){
       //Will retrieve it
       console.log("form action url:" + $("#form_id").attr("action")); 

       $("#form_id").attr("action", "@{/changePassword1}"); //Will set it

    }

    get_action();
});
</script>