有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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>  

共 (2) 个答案

  1. # 1 楼答案

    当您单击类别时,servlet可能会返回到新页面。但您可以在jsp文件中通过以下方式来实现这一点

    1. 从Servlet中键入并设置类别,如果单击桌面,则按如下所示进行设置。 例如:

      请求。setAttribute(“分类类型”、“桌面”)

    2. 在jsp文件中,在遍历元素之前,您可以检查“categoryType”并显示项目。 例如:

      if(“desktops”.equals(request.getAttribute(“categoryType”)){//显示项。}

    您可以在for循环中的Component类中有一个变量,如“componentType”,您也可以基于此进行检查

  2. # 2 楼答案

    您有多种选择,但最好使用Ajax框架,例如JQuery。您可以发出ajax请求并从服务器中提取数据,然后使用java脚本在视图中呈现该数据。在下拉列表更改时定义事件->;Ajax调用以获取下一个下拉数据->;下一个电话。这将确保您的页面不会刷新,用户体验更好

    否则就采用老式的方式——在页面加载时获取所有数据(所有下拉数据)——使用JS数组定义数组并获取事件更改时的数据