【发布时间】:2014-06-24 12:20:45
【问题描述】:
我有一个 html 页面和一个带有 Thymeleaf 模板引擎的 java 应用程序,我正在寻找一个教程来向服务器发出请求并根据响应仅呈现页面的一部分。
此时,我有一些按钮具有相同页面的链接但参数不同,我的 div 是基于属性 articleList 创建的(我根据 button_id 从服务器接收)
HTML:
<a href="/index?button_id=1"> button 1 </a>
<a href="/index?button_id=2"> button 2 </a>
<div class="" th:each="article : ${articleList}">
<p th:text="${article.getText()}">Article</p>
Java:
public class NodController implements IGTVGController {
public void process(
final HttpServletRequest request, final HttpServletResponse response,
final ServletContext servletContext, final TemplateEngine templateEngine)
throws Exception {
final WebContext ctx = new WebContext(request, response, servletContext, request.getLocale());
Integer button_id = Integer.valueOf(request.getParameter("button_id"));
List<String> articleList = getArticleList(button_id);
request.getSession().setAttribute("articleList",articleList);
templateEngine.process("/index", ctx, response.getWriter());
}
我希望我的按钮处理我的索引控制器,并且只更改带有文章的 div,而不是刷新整个页面。
我尝试过使用 ajax,但没有找到我能理解的服务器端代码示例,所以我不知道如何处理请求,也不知道如何使用 servlet。我也没有设法向我当前的控制器发送任何请求。
我也在 thymeleaf api 中找到了这个方法:
public final void process(String templateName, IContext context,
IFragmentSpec fragmentSpec, Writer writer)
IFragmentSpec 应该“选择要处理的模板片段(一旦读取和解析),丢弃模板的其余部分”但我找不到有关它的更多信息,例如如何使用它或者它是否是什么我在找。
【问题讨论】:
-
查看 jQuery 的 AJAX 函数,特别是 load() 函数。 api.jquery.com/load
-
我一直在尝试理解和使用 Ajax,但我能学到的只是如何从 .txt、.xml 或 .html 文件中加载数据。但是对于我的具体示例,我仍然不知道如何从服务器获取数据
-
您将设置一个单独的文件,从服务器检索数据,然后使用 AJAX 加载该文件。这可能会有所帮助 - learn.jquery.com/ajax
-
尝试将该部分放入更新面板
-
如果您需要 AJAX 以外的其他方式,请查看 JSF(Java Server Faces 2.0),它在某些组件内部使用 ajax。这样你就不需要使用 ajax 并且仍然可以完成你的工作。
标签: java jquery html ajax thymeleaf