我正在使用 Freemarker(FTL) 作为前端技术开发一个 Web 门户。完整的项目基于单个 ftl 页面,并使用向导来处理不同类型的用户请求。在后端,我使用了 Spring MVC 模式,其中 Controller 将处理用户请求。我正在使用 AJAX 调用在向导上导航并显示数据屏幕。
在单击按钮时调用 java 脚本函数,该函数进一步使用 ajax 调用 Controller 方法。 Controller 方法执行一些业务逻辑并返回所需的数据。
现在我的要求是在 FTL 页面的特定部分显示 ajax 调用数据。我正在使用 @ResponseBody 将 JSON 响应返回给 ajax 调用。
到目前为止,我正在使用下面的 ajax 方法在我的屏幕的特定部分加载数据。但是在这里我需要在 Java 脚本部分编写 HTML 标记才能加载内容。但我不想在此 Ajax 调用部分中编写 HTML 标记。我想从 ajax 调用返回对象并在所需的分区上使用适当的 FTL 标记来获取和加载数据。 非常具体 - $("#result").html(respContent);部分是让我选择返回 HTML 页面。但我想返回一个可以在 FTL 标签中解析的对象/实体。
提前致谢
$.ajax({
type : "GET",
cache:false,
url : "home",
data : {},
success : function(mwaCatlogueProfile) {
alert('data : '+ mwaCatlogueProfile);
console.log("SUCCESS: ", mwaCatlogueProfile);
var respContent = "";
respContent += "<span class='success'> <b>Please find server list:</b>";
respContent += " </br>";
respContent += mwaCatlogueProfile.environment + "</span>";
$("#result").html(respContent);
wizard.show();
},
最佳答案
由于 FreeMarker 是一种服务器端技术,AJAX 方法必须返回在服务器端使用 FreeMarker 呈现的 HTML。所以你所有的模板都保留在服务器端,只有一些用于正常响应,一些用于 AJAX 响应。当然,如果调用的 AJAX 服务不是专门为您的 UI 服务的,那么这将不起作用,您必须寻找 JavaScript 模板引擎。
关于javascript - 在 Ajax 调用中返回实体对象而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48383701/