JSF 在“ui:include src="#{bean.pagePath}”中动态包含 src

2024-03-23

我尝试在不同的选项卡中使用 ui:include 标签包含多个源页面路径。问题是,当我将源页面路径指定为静态时,意味着将显示该页面,但如果从支持 bean 指定源页面路径,则意味着它将不包含该页面。

这是我的代码

template.xhtml:

    <p:layoutUnit position="center" id="layoutCenter">
                <h:form id="tempFormId">
                    <p:tabView value="#{multiTabBean.tabsList}" var="useCase"
                        activeIndex="#{multiTabBean.activeTabIndex}">
                        <p:tab title="#{useCase.title}" closable="true">
                            <f:subview>
                                <h:panelGroup id="mainTempPanelGroupId" layout="block">
                                    <ui:include src="#{useCase.path}" />
                                </h:panelGroup>

                            </f:subview>
                        </p:tab>
                    </p:tabView>
                </h:form>
            </p:layoutUnit>

bean:

public String menuAction() {                    
    menuBtnRendered = true;
    FacesContext facesContext = FacesContext.getCurrentInstance();
    ExternalContext externalContext = facesContext.getExternalContext();
    selectedModuleViewId = externalContext.getRequestParameterMap().get(
            "moduleViewId");

    tabsList.add(new Tab(getTabId(selectedModuleViewId),
                selectedModuleViewId, getModulePath(selectedModuleViewId)));        

    return null;
}

我在用着@ViewScoped.


<ui:include>在视图构建时运行(当 XHTML 转换为 JSF 组件树时)。<p:tabView>在视图渲染期间运行(当 JSF 组件树需要生成 HTML 时)。

So, <p:tabView var>不可用时<ui:include>运行。这个问题在这个答案中有详细说明:JSF2 Facelets 中的 JSTL...有意义吗? https://stackoverflow.com/questions/3342984/jstl-in-jsf2-facelets-makes-sense (<ui:include>是一个标记处理程序,因此具有与 JSTL 标记相同的生命周期)。

您可以使用以下方法在一定程度上解决这个问题<c:forEach>生产<p:tab>s 而不是<p:tabView value>.

<p:tabView activeIndex="#{multiTabBean.activeTabIndex}">
    <c:forEach items="#{multiTabBean.tabsList}" var="useCase" varStatus="loop">
        <p:tab title="#{useCase.title}" closable="true">
            <f:subview id="tab_#{loop.index}">
                <h:panelGroup id="mainTempPanelGroupId" layout="block">
                    <ui:include src="#{useCase.path}" />
                </h:panelGroup>
            </f:subview>
        </p:tab>
    </c:forEach>
</p:tabView>

顺便说一下,很有趣的是看到你以某种方式使用<f:subview>在你最初的尝试中,这是完全无用的(已经考虑到<p:tabView var>),但它在这里实际上很有帮助(它创建了一个新的NamingContainer围绕选项卡内容)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSF 在“ui:include src="#{bean.pagePath}”中动态包含 src 的相关文章

随机推荐

  • JMeter - 使用其他 BeanShell 预处理器/后处理器中的变量?

    有没有一种方法可以将变量从一个 BeanShell 预处理器 后处理器引用到另一个 BeanShell 处理器 它们在同一个线程组内 如果我在 HTTP 请求下的 BeanShell 预处理器内创建一个字符串变量 那么我可以在同一 HTTP
  • 使用 C#/Linq 将扁平化分层数据从 SQL Server 转换为结构化 JSON 对象

    我正在开发一个 MVC 应用程序 它从 SQL Server 中的表中检索数据 其结构如下 Id Name Hierarchy Depth 01 Justin 0 02 Chris 1 1 03 Beth 1 1 2 中的示例数据Hiera
  • ggplot 堆叠条形图每个月的前 5 名

    我有一个很好的 我已经思考这个问题很长时间了 我有这个数据集 这个数据集可能很大 我想根据每月前 5 个最高计数绘制 ggplot 堆栈条形图 例如 对于 1 1 2012 最高计数将为 I G F D 和 E df Date Desc c
  • 使用 ggplot 绘制具有多个预测变量的模型的一个预测变量

    这是线性模型和 ggplot 的典型示例 require ggplot2 utils data anorexia package MASS anorex 1 lt glm Postwt Prewt Treat offset Prewt fa
  • C++ 的属性和反射库?

    大多数成熟的 C 项目似乎都有自己的反射和属性系统 即用于定义可以通过字符串访问并自动序列化的属性 至少我参与的很多C 项目似乎都是这样的重新发明轮子 你知道任何好的开源库对于支持反射和属性容器的 C 具体来说 通过宏定义 RTTI 和属性
  • 包中涉及std::transform的Rcpp代码的兼容性

    我正在完成我一直在做的一个包 所有检查看起来都很好 并且在我的计算机上编译没有问题 win builder包裹也没有问题 作为进一步检查 我尝试在同事的计算机上从源代码安装 但失败了 问题来自于我从中获取的 Rcpp 函数Rcpp 中关于向
  • 内容解析器的使用

    我是 android 领域的新手 正处于学习阶段 我有几个疑问 每个应用程序是否有单个 ContentResolver 对象 它是一个单例对象吗 谁管理这个对象的生命周期 如果是单例 它如何处理查询ContentProvider的多个请求
  • C11编译器一致性比较

    是否有任何网站可以比较实现 编译器之间当前的 C11 标准一致性 支持 gcc clang 英特尔 open64 pelles 据我所知 没有通用网站 现在是开始建立一个网站的好时机 然而 大多数项目都有自己的列表 http clang l
  • 子项目中的 Cocoapods

    我有一个带有子项目的项目 子项目和主项目都必须使用Cocoapods来集成一个库 如果没有Cocoapods 似乎无法集成 所以我为主项目及其子项目设置了 Cocoapods 子项目在其生成的工作区中构建 但编译主项目会产生以下错误 ld
  • 如何使标签文本左右对齐以具有相同的对齐方式?

    我使用 html 和 CSS 处理模板 我面临的问题是我无法使左右对齐标签文本相同 作为例子 提交日期和员工 ID 不是从左侧的同一点开始 因此我需要左侧的所有文本都具有相同的对齐方式 同样在右侧 文本也不是从与 和 相同的点开始 所以我需
  • 具有自定义比较器的 Java PriorityQueue

    我正在使用 PriorityQueue 和我自己的比较器 但不知何故 最终结果并不总是好的 我应该按平均成绩 姓名 身份证号码排序 最后它应该返回有序队列中剩余的名称 其余的名称都可以 但顺序不同 输入 姓名 平均成绩 id no add
  • 如何打印密码组合(但每个索引都有自定义约束)

    我正在尝试构建一个动态密码恢复工具 您可以指定密码以及与未知密码索引对应的未知字符列表 因此 如果您记住了 90 的密码 并且记不住几个字母 这将为您提供轻量级的暴力破解 我能够将用户提供的密码与未知字符列表结合起来 但是 我一直试图打印每
  • 禁用 mp3 自动播放

    我尝试禁用自动播放但没有成功 这是我的代码 失败的尝试 去除autoplay完全地 改变autoplay to autostart and AutoStart setting autoplay autostart AutoStart to
  • Reactable R - 将每页最大行数从 10 更改为 5

    我想将每页可反应的行数限制为 10 到 5 这是一个可重现的示例 set seed 250 df lt tibble x sample x 1 20 reactable df 现在 当您运行此代码时 会出现两页 每页 10 行 我想要四页
  • 正则表达式将 npm 库排除在缩小范围之外

    我必须为 websockets 使用非开源发布 订阅库 扩散 https www npmjs com package diffusion v 5 9 2 并且必须坚持使用特定版本 因为它是在服务器端使用的 我无法控制它 问题在于 在其代码库
  • 无法在 asp.net 中的 webmethod 中获取会话

    我只是发现问题与webmethod无关 这是由另一个问题引起的 我设置了Session PhotoId 在正常的 aspx 中 但我无法检索其中的值webMethodaspx 页面的 WebMethod EnableSession true
  • Windows C# 实现linux dd 命令

    我正在编写一个在 Windows 上运行的 C Net 应用程序 它需要拍摄可移动磁盘的映像并将其放入 Linux Live USB 上 Live USB 被插入目标机器并启动 启动时它会运行一个脚本 该脚本使用 dd 命令 如下所示将其闪
  • 如何从Python数据框中的列列表中删除重复项?

    我有一个数据框 id rev names 34e A su ra ve ra de ra 45e R ra su su ve de 55e G su ra de 41e M su de mu er su 现在我需要删除重复项 输出应如下所示
  • 更改 intellij 窗格的背景颜色

    我更改了 intellij 中的配色方案 以便 Java 编辑器窗格的背景为深色 文本为浅色 我不确定这是否直接相关 但是 在其他窗口 例如 运行 窗口 中 背景保持白色 但任何系统消息都显示为白色文本 这显然是一个问题 因为我无法阅读白色
  • JSF 在“ui:include src="#{bean.pagePath}”中动态包含 src

    我尝试在不同的选项卡中使用 ui include 标签包含多个源页面路径 问题是 当我将源页面路径指定为静态时 意味着将显示该页面 但如果从支持 bean 指定源页面路径 则意味着它将不包含该页面 这是我的代码 template xhtml