java如何动态填充jsp页面?
我在网站上工作,使用servlet和jsp
我有不同类别的jsp页面,当我点击一个类别时,servlet会重定向到另一个包含组件(台式机、笔记本电脑、平板电脑…)的jsp页面但若我点击(桌面)类别在jsp页面中只显示桌面(组件),那个么页面上就有所有的类别,我需要这样做
这是我的jsp页面和用于组件的servlet:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Collection<Components> components;
components= componentsdao.getAll() -- geting all components from database
request.setAttribute("components", komponenta);
request.getRequestDispatcher("pcitem.jsp").forward(request, response);
}
and this is part of jsp page
<c:forEach var="i" items="${requestScope.components}">
<p>
${i.nameofcomponent}
</p>
<div >
<h6>Description ${i.descriptionoofcomponent}</h6>
</div>
<div ">
<h6>Price ${i.priceofcomponent}</h6>
</div>
<div >
<h6>Official site ${i.link}</h6>
</div>
</c:forEach>
# 1 楼答案
当您单击类别时,servlet可能会返回到新页面。但您可以在jsp文件中通过以下方式来实现这一点
从Servlet中键入并设置类别,如果单击桌面,则按如下所示进行设置。 例如:
请求。setAttribute(“分类类型”、“桌面”)
在jsp文件中,在遍历元素之前,您可以检查“categoryType”并显示项目。 例如:
if(“desktops”.equals(request.getAttribute(“categoryType”)){//显示项。}
或
您可以在for循环中的Component类中有一个变量,如“componentType”,您也可以基于此进行检查
# 2 楼答案
您有多种选择,但最好使用Ajax框架,例如JQuery。您可以发出ajax请求并从服务器中提取数据,然后使用java脚本在视图中呈现该数据。在下拉列表更改时定义事件->;Ajax调用以获取下一个下拉数据->;下一个电话。这将确保您的页面不会刷新,用户体验更好
否则就采用老式的方式——在页面加载时获取所有数据(所有下拉数据)——使用JS数组定义数组并获取事件更改时的数据