p:commandButton 操作和 f:setpropertyactionlistener 未在 p:columngroup 中调用

2023-11-30

我需要将子组件放入 primefaces 子表页脚 (p:columngroup type="footer") 中,但标准子表渲染器不提供这样的机会。所以我重写了 org.primefaces.component.SubTableRenderer 以添加子渲染:

public class CustomSubTableRenderer extends SubTableRenderer{
@Override
protected void encodeColumnFooter(FacesContext context, SubTable table, Column column) throws IOException {
    ResponseWriter writer = context.getResponseWriter();

    String style = column.getStyle();
    String styleClass = column.getStyleClass();
    styleClass = styleClass == null ? DataTable.COLUMN_FOOTER_CLASS : DataTable.COLUMN_FOOTER_CLASS + " " + styleClass;

    writer.startElement("td", null);
    writer.writeAttribute("class", styleClass, null);
    if(column.getRowspan() != 1) writer.writeAttribute("rowspan", column.getRowspan(), null);
    if(column.getColspan() != 1) writer.writeAttribute("colspan", column.getColspan(), null);
    if(style != null) writer.writeAttribute("style", style, null);

    //encode children
    for(UIComponent footerColumnChild : column.getChildren()) {
        if(footerColumnChild.isRendered()) {
            footerColumnChild.encodeAll(context);
        }
    }

   UIComponent facet = column.getFacet("footer");
    String text = column.getFooterText();
    if(facet != null) {
        facet.encodeAll(context);
    } else if(text != null) {
        writer.write(text);
    }

    writer.endElement("td");
}

}

当我将一些子组件放入 p:column 组中时,例如:

<p:dataTable>
            <p:subTable>
                <p:column>..</p:column>
                <p:columnGroup type="footer"> <p:row> <p:column colspan="3">
                    <p:commandButton id="button" 
                                     action="#{myBean.someAction}"
                                     oncomplete="jQuery('#select').modal('show');return false;"
                                     value="#{val.add}" alt="#{val.add}"
                                     title="#{val.add}"> </p:commandButton>
                    <f:setPropertyActionListener value="#{otherBean.id}"
                                                 target="#{anotherBean.selectedBackId}" /></p:column> </p:row>
                </p:columnGroup> </p:subTable>
        </p:dataTable>

按钮已呈现并且 onClick 事件调用正常,但按钮的操作和 f:setPropertyActionListener 都不会调用。如何让它们发挥作用?

如果我将 p:columnGroup type="footer" 结构更改为 p:column 标记,则按钮操作和 f:setPropertyActionListener 都可以正常工作


PrimeFaces 有一个错误,如果 commandButton 或 commandLink 位于标题中,则不会触发操作侦听器(source- 参见第二个缺陷)。我预感您在页脚中遇到了同样的问题。

该问题已在最近的版本中修复,但尚未向公众开放。如果您想使用 PrimeFaces 按钮(而不是标准 HTML 按钮),则必须购买 PrimeFaces Elite 订阅或从头开始编译源代码。

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

p:commandButton 操作和 f:setpropertyactionlistener 未在 p:columngroup 中调用 的相关文章

随机推荐

  • 将两个 Xpath 组合成一个循环?

    我正在使用 xpath 从文档中获取信息 唯一的问题是我无法将它们组合成 1 个 for 循环 以便信息在页面上正确显示 我的代码是
  • 从 UI 选择特定时区时在 javascript/jquery 中添加类

    我正在编写如下所示的 html 代码 该代码来自此url In it 显示在 ET 时区下显示 100 正确 因为它们属于正确的日期但对于其他时区 PT MT CT AT NT 某些节目的日期不正确 代码下方的屏幕截图属于该类日程操作栏从下
  • Mysql自动更新事件

    使用 php 和 MySql 无论如何都可以在日期过期时获取数据库中的日期以自行更新 即事件名称 x 的日期为 2012 05 12 在 2012 05 13 日期应更改为 2012 05 19 从 2012 05 12 算起一周 多谢你们
  • 在哪里初始化托管 C++/CLI DLL?

    使用 C CLI 创建 DLL 时 或者我应该问 是否存在与 DllMain 等效的东西 这段初始化代码中不能调用的内容是否有任何限制 Dan 关于加载器锁 C CLI 的 CLR 延迟加载以及混合模式二进制文件的正确初始化 我昨天刚刚在这
  • Pyqt:从函数“动态”附加到 qtextedit

    我的 pyqt gui 中有一个按钮 单击该按钮会运行一个函数 该函数会执行一些冗长的数学计算 在这个函数中有很多打印语句 例如 print finished calculating task1 going on to task2 因此 通
  • java中用simplexml反序列化xml

    我正在尝试使用 SimpleXML 反序列化 xml 字符串 我查看了他们的示例 但我不确定我是否掌握了这个概念 示例 XML 验证
  • 生成不带foreignObject标签的svg

    我在用dom to image js插入 问题是 它会生成一个
  • 如何从HttpClient获取json文件?

    我正在尝试获得一个json文件来自HttpClient 但是当我添加时出现错误 subscribe imports import Injectable from angular core import HttpClient HttpHead
  • 检查文件中的行是否以特定字符串开头 - 进行一些计算

    所以这就是我想做的 我有一个巨大的文件 我想在 python 中打开它并查看每一行 如果它与某个预定的字符串匹配 我想获取紧随该字符串之后的数字 将它们全部加起来并得到平均值 该文件如下所示 Data Number of hours 34
  • 在 wpf 中拖放路径

    是否可以使用鼠标事件处理程序在 wpf 中拖放路径 特别是 我想用鼠标左键拖动路径并将其放置在网格上 如何才能做到这一点 尝试这个 鉴于 文本框名称为 TextBox1 public MainWindow Initialize UI Ini
  • 如何避免 Qt app.exec() 阻塞主线程

    我是 Qt 新手 但需要解决一个难题 我创建了一个非常简单的 GUI 我需要将其添加到现有的 C 应用程序中 问题是 我只编写了一个插入更大架构的模块 这限制了我对主线程的访问 我的代码必须驻留在以下四个函数中 Init 函数 在主线程中运
  • 到底如何在后台线程上渲染 Metal?

    这个问题是由用户界面交互引起的 例如全屏显示标题栏 该问题的答案提供了解决方案 但没有提供如何解决实施那个解决方案 解决办法是在后台线程上渲染 问题是 苹果提供的代码涵盖了很多内容 所以大部分都是无关的代码 所以即使我能理解它 使用苹果的代
  • 在 Django 中提交表单时不会调用基于通用类的视图中的 post 方法?

    我写了一个 mixin 来覆盖POST and get from kwargs of CreateView 我在做AJAX提交我的表格 我看到get from kwargs通过在控制台上打印来调用 但没有其他方法 例如post form v
  • Espresso 和 Android 联系人选择器

    我尝试使用 Espresso 的 Android 联系人选择器添加联系人 但这不起作用 这是调用联系人选择器的命令 Intent intent new Intent Intent ACTION PICK ContactsContract C
  • 实体框架/Linq to SQL:跳过并获取

    只是好奇 Skip Take 应该如何工作 我得到了我想要在客户端看到的结果 但是当我连接 AnjLab SQL Profiler 并查看正在执行的 SQL 时 它看起来好像正在查询并将整个行集返回到客户 它真的会返回所有行 然后在客户端使
  • 从 WebBrowserControl 中单击的 HtmlElement 获取 XPath

    如何从 WebBrowserControl 中单击的 HtmlElement 获取 XPath 这是我检索单击的 HtmlElement 的方法 System Windows Forms HtmlDocument document this
  • 在Java中,是否有一个Runnable版本旨在在当前线程中执行?

    JavaDoc for Runnable 状态 已添加强调 Runnable 接口应该由任何其类实现 实例旨在由线程执行 该类必须定义一个名为 run 的无参数方法 该接口旨在为希望在活动时执行代码的对象提供通用协议 例如 Runnable
  • 在Python中重新组织数组元素

    如何重新组织元素A shape 1 7 2 生成新数组A1 shape 1 7 2 按增加的顺序j In A 0 0 array 0 1 j指的是1 in 0 1 如果有一些非常通用的东西那就太好了 这样代码就可以处理形状为A变得非常大 比
  • 如何找到已弃用方法的替代方法?

    我是 Android 编程新手 我一直在关注有关创建音乐播放器的教程这个网站 本教程要求setAudioStreamType方法来自MediaPlayer类是已弃用 哪种方法特别替代了这个已弃用的方法 并且 是否有一个来源可以让我们找到所有
  • p:commandButton 操作和 f:setpropertyactionlistener 未在 p:columngroup 中调用

    我需要将子组件放入 primefaces 子表页脚 p columngroup type footer 中 但标准子表渲染器不提供这样的机会 所以我重写了 org primefaces component SubTableRenderer