如何将参数传递给 p:dataTable 中的 valueChangeListener?

2024-02-27

我正在打电话valueChangeListener on a <h:selectBooleanCheckbox>它位于数据表内。该数据表又位于另一个(外部)数据表内。在里面valueChangeListenermethod 我想要外部dataTable的实例对象。有没有办法获取外部dataTable实例的对象?

EX:

<h:panelGroup id="panelId">
    <p:dataTable id="outerDatatable"
                 var="supplier"
                 value="bean.supplierList">

        <p:column>
            <f:facet name="header">
                <h:outputText value="Suppliers" />
            </f:facet>
            <h:outputText value="#{supplier.name}" />
        </p:column>

        <p:column>
            <p:dataTable id="innerDataTable"
                         var="supplierAccount"
                         value="supplier.supplierAccountList">

                <p:column>
                    <h:selectBooleanCheckbox id="booleanBoxId"
                                             value="#{supplierAccount.supported}"
                                             valueChangeListener="#bean.checkBoxListener}"
                                             immediate="true"
                                             onchange="this.form.submit();"/>
                </p:column>
            </p:dataTable>
        </p:column>
    </p:dataTable>
</h:panelGroup>

我找到了以下解决方案:我使用了<p:ajax>听众而不是valueChangeListener,我可以传递“供应商”对象以及supplierAccount对象此侦听器方法。我们可以将任意数量的自定义对象传递给<p:ajax>听众。

<p:column>
    <h:selectBooleanCheckbox id="booleanBoxId"
                             value="#{supplierAccount.supported}"
                             immediate="true">
    </h:selectBooleanCheckbox>

    <p:ajax listener="#{bean.myListenerMethod(supplier,supplierAccount)}"
            update=":formName:panelId"/>
</p:column>

在这种特殊情况下,您可以通过评估来获得它#{supplier}以编程方式:

public void checkBoxListener(ValueChangeEvent event) {
    FacesContext context = FacesContext.getCurrentInstance();
    Supplier supplier = context.getApplication().evaluateExpressionGet(context, "#{supplier}", Supplier.class);
    // ...
}

然而,这很丑陋,您通过以下方式同步提交整个表单onchange="submit()"。我建议为此添加一些ajax。

<h:selectBooleanCheckbox value="#{supplierAccount.supported}">
    <f:ajax listener="#{bean.checkBoxListener}" render="???" />
</h:selectBooleanCheckbox>

(the render属性由你决定)

with

public void checkBoxListener(AjaxBehavior event) {
    Boolean value = (Boolean) ((UIInput) event.getComponent()).getValue();
    FacesContext context = FacesContext.getCurrentInstance();
    Supplier supplier = context.getApplication().evaluateExpressionGet(context, "#{supplier}", Supplier.class);
    // ...
}

或者,如果您的环境支持 EL 2.2,从而在 EL 中指定方法参数:

<h:selectBooleanCheckbox value="#{supplierAccount.supported}">
    <f:ajax listener="#{bean.checkBoxListener(component, supplier)}" render="???" />
</h:selectBooleanCheckbox>
public void checkBoxListener(UISelectBoolean checkbox, Supplier supplier) {
    boolean selected = checkbox.isSelected();
    // ...
}

也可以看看:

  • 何时使用 valueChangeListener 或 f:ajax 监听器? https://stackoverflow.com/questions/11879138/when-to-use-valuechangelistener-or-fajax-listener

无关针对具体问题,使用onchange="submit()",了解这一点可能会有用onchangeIE6/7 中的复选框无法按预期工作。它仅在每两次点击时触发。你更想使用onclick="submit()"反而。

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

如何将参数传递给 p:dataTable 中的 valueChangeListener? 的相关文章

随机推荐

  • 长整型值 Objective-C

    我在 NSString 中有长整数值 例如 2705758126 当我尝试显示它时 NSLog i myValue integerValue 它返回 2147483647 如何显示 比较等这个长整数 Try with NSLog lld m
  • 删除 Vim 中行前的所有任意空格

    我编写了一个用于解析 XML 标签的插件 标签内的内容是缩进的 当我将解析的字符串复制到文件中时 它会变得像 Example line This is part of the parsed line Thats goes one End o
  • 为什么 bootstrap input-group 和 input-group-addon 会分开?

    我在表单水平 div 中有一个输入组 它在大屏幕上看起来很棒 它看起来也很棒bootply http www bootply com JHvCfPAYoT 但是每当我开始调整屏幕大小时 表单就会换行 这是可以的 但 input group
  • WPF自定义按钮最佳方法

    我想创建一个自定义Button在 WPF 内部 当然 该按钮将是一个用户控件 它将包含许多视觉元素 如描边 高光 阴影 发光 图像等 问题是 如果我使用 DependencyProperties 并将它们绑定在 XAML 中 我将无法在 D
  • 如何删除sqlite中的数据库?

    我在 Android 中使用 SQLite 我想删除数据库 例如 mysql drop database dbname 我如何在 SQLite 中实现这段代码 要删除您的应用程序数据库 请尝试以下操作 this deleteDatabase
  • 数据模板与 ItemContainerStyle

    我见过一些其他 Silverlight vs 问题 但找不到任何针对此特定匹配的问题 我正在尝试定义我的对象绑定到的方式ListBox将显示 我定义了一个DataTemplate 但我真的不确定这应该在哪里结束ItemContainerSt
  • 使用 SDK 在 Google Cloud 中设置环境变量时出错

    我正在尝试为 Google Cloud 上的 Django 应用程序设置环境变量 我在SDK中输入了以下内容 gcloud functions deploy env vars runtime python37 set env vars SU
  • 由于 jQuery Mobile,IE9 窗口失去焦点

    在我们的产品中 我们在 ASP NET 网站中使用 jQuery Mobile 的最新开发版本 每次我们进行 ASP NET 回发时 浏览器窗口都会转到屏幕的后面 例子 最大化任何窗口 示例 视觉 Studio Word Windows 资
  • 凸轮卡扫描仪自动填充未发生

    我的输入字段是这样创建的
  • Javascript 在原型中使用值类型设置对象属性? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 查询 Mongo 中嵌套列表是否存在

    我在 Mongo 中有一个文档 其结构如下 id ObjectId 4eea7237d0ba3a04f20008fb code b2677c2809c844cc9d7e3e4ff8d95b46 city id 4 datetime ISOD
  • 使用 GitHub GUI 提交和同步,一切都消失了

    因此 在 GitHubGUI 中 像往常一样 我进行了更改 然后单击Commit Sync短暂地弹出 合并冲突 对话框 然后一切都消失了 我将最新的更改与远程存储库同步 我所做的一切都消失了 以前在我不断点击后也发生过这种情况commit
  • 如何在 iOS 中使用位图/RGB 数据制作图像动画

    我正在 iPhone 上编写游戏程序 并且有一个想要制作动画的图像 例如位图中行走的人 位图随时间变化 如何有效地将位图添加到屏幕 UIView 加载图像序列的最有效方法是使用 PVR 格式图像并将其作为 OpenGL 纹理加载 PVR 图
  • 特定时间的深度睡眠

    我需要在特定时间激活外设 然后休眠一段时间 然后再次停用外设 我可以用一个简单的方法来做到这一点sleep但这会让我的 ESP32 保持唤醒状态并消耗电池 有没有办法在规定的时间内进入深度睡眠 然后再次醒来 理想情况下 我会简单地安排在一定
  • 为androidTest添加布局资源

    我想将布局 xml 文件添加到我的androidTest仅用于测试的文件夹 I added res layout文件夹到androidTest并尝试向其中添加布局文件 但它给出了错误URI is not registered for xml
  • 无法在 Android 应用程序运行时加载库

    我正在开发 android 应用程序 其中我使用 JNI 作为本机 c 代码 我在 android 2 0 版本和 ndkr3 上构建这个应用程序 它运行良好 现在 当我更改android sdk版本1 5和api版本3时 我遇到了无法打开
  • JavaScript 中获取两个日期之间的差异? [复制]

    这个问题在这里已经有答案了 如何获得全天中 2 个日期之间的差异 我不需要一天的任何分数 var date1 new Date 7 11 2010 var date2 new Date 12 12 2010 var diffDays dat
  • 如何使用 Ember CLI 进行生产就绪构建?

    我一直在 Ember 中构建一个 Web 应用程序 并准备将其放在服务器上以供公众使用 我只想创建 dist 文件夹 然后我将通过 FTP 手动将其上传到服务器 我如何在 Ember 中为此构建一个 dist 我不知道如何打开缩小并从构建中
  • Express 和 nginx net::ERR_CONTENT_LENGTH_MISMATCH

    我正在开发一个 Express 驱动的网站 它通过 nginx 代理 有时在浏览器中加载页面时 我会得到以下信息 GET http myapp local css bootstrap css net ERR CONTENT LENGTH M
  • 如何将参数传递给 p:dataTable 中的 valueChangeListener?

    我正在打电话valueChangeListener on a