当前位置: 首页 > 知识库问答 >
问题:

如何在jqueryajax中修改成功块中的freemarker变量值

高展
2023-03-14

如何在jQuery AJAX中更改成功块中freemarker变量的值,我的页面有两个控制器第一个控制器使用GET方法返回一个带有视图名称的简单字符串,第二个控制器使用json和POST方法处理数据

给你

@RequestMapping(value = "myform", method = RequestMethod.GET)
    public String formmethod(Model model) {



        model.addAttribute("successMessage", "i'm in the firts controller");

        return "forms/myform";
    }

我的第二个控制器

@RequestMapping(value = "myform", method = RequestMethod.POST)
    public @ResponseBody String getTags(@RequestBody final String json, Model model) 
    throws IOException 
    {
         ObjectMapper mapper  =  new ObjectMapper();

         User userMapped=  mapper.readValue(json, User.class);

         User person  =  new Usuario();
         person.setName("new name");
         person.setLastName("new lastname");


         model.addAttribute("successMessage", person.getName());

         return toJson(userMapped);
    }

我的Json方法

private String toJson(User person) 
    {
        ObjectMapper mapper = new ObjectMapper();
        try 
        {
            String value = mapper.writeValueAsString(person);
            // return "["+value+"]";
            return value;
        } 
        catch (JsonProcessingException e) 
        {
            e.printStackTrace();
            return null;
        }
    }

我的传呼myform.html

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>

<script type="text/javascript">

        function doAjaxPost() 
        {
            // get the form values
            var name= $('#name').val();
            var lastName = $('#lastName ').val();

            var json = {"name" : name, "lastName " : lastName };
            console.log(json);
            var FreeMarkervariable = "${successMessage}";

            //this brings me the value that i put in the firts controller


            $.ajax(
            {
                type: "POST",
                url: "myform",
                data: JSON.stringify(json), 

                contentType: "application/json; charset=utf-8",
                dataType: "json",
                cache: false,

                beforeSend: function(xhr) 
                            {
                                xhr.setRequestHeader("Accept", "application/json");  
                                xhr.setRequestHeader("Content-Type", "application/json");  
                            },
                success: function(data) 
                        {


//HERE I WANT TO CHANGE THE VALUE OF MY FREEMARKER VARIABLE SO I CAN 
//PRINT A SUCCESS MESSAGE IN A DIV


                            <#assign successMessage = "success">



                        },
                error:function(data,status,er) { 
                    alert("error: "+data+" status: "+status+" er:"+er);
                }

            });
        }
</script>
    <!-- NEW WIDGET START -->
    <article class="col-sm-12">
        <div class="alert alert-warning fade in">
            <button class="close" data-dismiss="alert">
                ×
            </button>
            <i class="fa-fw fa fa-warning"></i>
            <strong>${successMessage} I WANT TO PRINT A SUCCESS MESSAGE HERE </strong> 
        </div>
    </article>
    <!-- WIDGET END -->
<fieldset>
 <legend>Name in view</legend>
    <form name="myform">
        Name in view:   <input type="text"   name="name">
        <br>
        Last Name in view:   <input type="text" id="lastName" name="lastName">
        <br>
        <input type="button" value="Add Users" onclick="doAjaxPost()">

    </form>
</fieldset>
 <br>

到目前为止,我的freemarker变量得到了我放在success块中的值,但在我按下submit按钮之前它显示为success,我相信Success块是在我点击submit按钮后执行的,所以我不知道为什么在我按下按钮之前它就有这个值,在我按下submit按钮之前它应该有“我在firts控制器中”

共有1个答案

沙宣
2023-03-14

Freemarker在服务器上生成其输出,然后发送到浏览器。浏览器从未看到任何freemarker“代码”。您需要使用javascript/jQuery更新strong元素。

所以代替你的

$("strong").text("Success");
 类似资料:
  • 我试图在我的FreeMarker模板中调用一个Java方法,该模板使用公共静态Java变量作为其参数之一。例如,如果FreeMarker代码在

  • 问题内容: 由于我需要在使用Tensorflow训练模型之前为数据编写一些预处理程序,因此需要对进行一些修改。但是,我不知道如何像使用一样修改值。 最好的方法是可以直接修改。但是,在当前版本的Tensorflow中似乎不可能。另一种方法是改变到该进程,然后用改回来。 关键是如何更改为。 1):https : //www.tensorflow.org/versions/r0.8/api_docs/p

  • 本文向大家介绍Java反射如何修改private final成员变量值,包括了Java反射如何修改private final成员变量值的使用技巧和注意事项,需要的朋友参考一下 大家都知道使用java反射可以在运行时动态改变对象的行为,甚至是private final的成员变量,但并不是所有情况下,都可以修改成员变量。今天就举几个小例子说明。 基本数据类型 测试代码: 运行结果:18 此时无法修改成

  • 问题内容: 我正在尝试从cron运行python脚本,但是它无法正常运行,所以我假设它的路径env变量不同。无论如何,要在python脚本中更改变量吗? 问题答案: 您无需从python脚本中设置PATH。取而代之的是 在您的crontab的顶部。然后,这些环境变量将可用于通过您的crontab运行的所有cron作业。

  • 问题内容: 我正在尝试在设置数组之前对要设置的数组进行排序,但是的参数是不可变的,并且会改变值。如何克服这个限制? 为了使这个问题脱离我自己的项目环境,我提出了以下要点: 我收到错误消息,指出该变量不可变,正在尝试对其进行突变。 问题答案: 不能对内部的值进行突变。如果实现观察者,则将新的属性值作为常量参数传递给它。 修改它以使用该怎么办? 在值存储之前被调用。 新值存储后立即调用。 您可以在此处

  • 问题内容: 我有一个Freemarker模板,其中包含一堆占位符,在处理模板时会为其提供值。如果要提供userName变量,我想有条件地包括模板的一部分,例如: 但是,FreeMarker手册似乎表明if_exists已过时,但是我找不到其他方法来实现这一目标。当然,我可以简单地提供一个额外的布尔变量isUserName,并像这样使用它: 但是,如果有一种方法可以检查userName是否存在,那么