当前位置: 首页 > 面试题库 >

导航时部分页面更新(PrimeFaces ajax)

韩阳成
2023-03-14
问题内容

我已经使用facelets模板完成了一个基本的JSF应用程序。我的模板如下:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets">

    <h:head>
        <!-- Links to CSS stylesheets... -->
        <title><ui:insert name="title" /> - FManager</title>
    </h:head>

    <h:body>
        <div id="wrapper">
            <div id="header"> <b>FManager</b> Application </div>

            <div id="content">
                <p:growl id="growl" />
                <ui:insert name="content">
                    Sample content.
                </ui:insert>
            </div>
        </div>

        <div id="footer">Made using JSF and Primefaces</div>
    </h:body>
</html>

然后,我有一个 主页 (如下所示),它导航到 第二页 。两个页面都使用上面的模板。

<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                template="./template.xhtml">

    <ui:define name="title">Main page</ui:define>

    <ui:define name="content">
        <h2>Welcome to the <b>FManager</b> application</h2>

        <h:form>
            <p>Click the button below to create the first entry!</p>
            <p:commandButton value="Create entry" action="create" />
        </h:form>
    </ui:define>

</ui:composition>

如果我<redirect/>在faces-config.xml中使用它,它将进行导航,但是将重新加载 整个 页面。我的问题是:

有没有一种方法可以从页面导航到另一个仅更新<ui:insert>模板部分的内容?(同时保留页面的其余部分不变)

谢谢!


问题答案:

您可以通过ajax重新加载内容,但URL将保持不变。如果负担得起,请按如下所示更新代码:

在中template.xhtml,替换

<div id="content">

通过

<h:panelGroup id="content" layout="block">

然后在中somepage.xhtml,替换

<p:commandButton value="Create entry" action="create" />

通过

<p:commandButton value="Create entry" action="create" update=":content" />

最终摆脱<redirect />(实际上,更希望摆脱所有导航案例,因为它们会使faces- config.xml文件the 肿)。重定向也可以在结果中指定,如中所示action="create?faces-redirect=true"

这只会更新<title>。但是,您可以使用简单的JavaScript行来实现。



 类似资料:
  • 对于搜索引擎或电子商务网站,常常将信息分页显示,这样可以减少页面大小,进而提高页面的加载速度。分页显示后,就需要通过分页导航来告诉用户要浏览的信息量,方便用户快速跳过一些不想看的信息,也便于定位和查找。因此,分页导航也是很常见的、很重要的一种导航。 实际上,分页导航的制作方法也很简单。分页导航一般包括上一页、页码、下一页三部分。首先,创建一个容器,来包裹分页导航的链接。如: <div class

  • 我已使用此(react router 2.0)在路由器上设置了browserHistory: 然后,我尝试使用react router中的browserHistory以编程方式从视图(ala: 这将URL更改为 /map但不会呈现该路由中的组件。我做错了什么?

  • Iam正在使用ionic应用程序编辑配置文件和查看配置文件。编辑编辑页面的详细信息后,它将导航到查看配置文件页面。 我希望在导航后刷新查看配置文件页面。 这是editprofile.ts代码: 首先我用下面的导航 通过谷歌搜索,我添加了这个来在导航后刷新视图配置文件 现在发生的是,首先它被重定向到查看个人资料页面,并且没有刷新,它直接重定向到主页,主页被刷新。 请帮助我如何在从“编辑配置文件”页面

  • 导航规则是JSF Framework提供的那些规则,用于描述单击按钮或链接时要显示的视图。 可以在名为faces-config.xml的JSF配置文件中定义导航规则。 它们可以在托管bean中定义。 导航规则可以包含可以显示结果视图的条件。 JSF 2.0也提供隐式导航,其中不需要定义导航规则。 隐式导航 JSF 2.0提供了名为implicit navigation auto view page

  • 我有这个推特引导代码 但是当我查看页面的开头时,导航栏会阻塞页面顶部附近的一些内容。有没有办法让它在查看页面顶部时将其余内容向下推,这样内容就不会被导航栏阻挡?

  • 我有一个html页面和一个带有Thymeleaf模板引擎的java应用程序,我正在寻找一个教程,向服务器发出请求,并根据响应仅呈现页面的一部分。 此时,我有一些按钮具有相同页面的链接,带有不同的参数,我的div是基于属性文章列表创建的(我从服务器接收基于button_id) 超文本标记语言: Java: 我希望我的按钮处理我的索引控制器,只更改文章的div,而不是刷新整个页面。 我尝试过使用aja