- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个像这样的 primefaces 组件:
<p:panel styleClass="errorsPanelClass" id="errorsPanel" header="Messages" toggleable="true" effect="drop" toggleSpeed="0" closeSpeed="0" widgetVar="errorsPanelWidget">
我正在尝试在 javascript 上下文中获取组件并更新它。
我已经尝试过:
function getWidgetVarById(id) {
for (var propertyName in PrimeFaces.widgets) {
if (PrimeFaces.widgets[propertyName].id === id) {
return PrimeFaces.widgets[propertyName];
}
}
}
或
或
Get widgetVar with JavaScript or check/uncheck all other PrimeFaces checkboxes
如果我能找到一个按类获取 widgetVar 的解决方案,那就太好了,但欢迎任何其他解决方案。
我也试过:
function getWidgetVarById() {
for ( var propertyName in PrimeFaces.widgets) {
alert(PrimeFaces.widgets[propertyName].id);
}
}
但我收到 javascript 错误“'PrimeFaces.widgets.length' 为空或不是对象”
有什么想法吗?
最佳答案
PrimeFaces 3.5 的 id 和 widgetVar 之间没有映射。在 3.5 中,小部件被添加到“窗口”对象中,而不是存储在其他地方。这意味着 widgetVar 已经直接是一个你可以使用的变量。
<p:panel id="errorsPanel" widgetVar="errorsPanelWidget">
3.5/4.0:(在 4.0 中这仍然有效,但已弃用,取而代之的是 PF('..') 方式)errorsPanelWidget.close()
5.0 及更高版本:PF('errorsPanelWidget').close()
(除非您配置旧模式,否则它将像 3.5/4.0 一样运行)
然后最简单的方法是使用一个约定,你将 widgetVar 命名为你的 id 但带有后缀,例如id_widget。您可以(建议不要这样做)将 widgetVar 留在外面,然后小部件与 id 相同(这在某些情况下会导致分类,这就是 PF 放弃此约定的原因)。
并且您仍然可以检查在 3.5 中 widgetVar 值是否以一种或另一种方式添加到小部件的外部 html 元素。然后你可以用一些 jquery 检索它。就个人而言,我在以前的 PF 版本中使用了“约定”方式(将“Widget”附加到也在 id 中的值并将其放入 widgetVar 属性中)
如果“更新”小部件,你的意思是更新小部件的内容,你不能。没有refresh()
类方法可以做到这一点。你可以做的是将 id(!) 发送到服务器并通过 requestContext
像这样执行 update(..)
RequestContext context = RequestContext.getCurrentInstance();
context.update("errorsPanel");
但是在您更新列表服务器端时就这样做可能会更好。所以这可能是您落入了 XY 陷阱。
但如果真的需要,这里有一个有效的例子,使用 PrimeFaces extensions remoteCommand因为这是最简单的方法)
xhtml:
<pe:remoteCommand id="refreshWidgetCommand" name="refreshWidget" process="@this" actionListener="#{updateWidgetController.refresh}">
<pe:methodSignature parameters="java.lang.String"/>
<pe:methodParam name="id"/>
</pe:remoteCommand>
bean 类:
@ManagedBean
@RequestScoped
public class UpdateWidgetController {
public void refresh(final String id) {
RequestContext context = RequestContext.getCurrentInstance();
context.update(id);
}
}
调用 refreshWidget('errrosPanel')
;将实现你想要的。
不想使用 PFE(或由于版本不兼容而无法使用),您可以使用 PF remoteCommand 实现相同的目的但 3.5 的具体示例可能略有不同
关于javascript - 在 javascript 中获取 primefaces widgetVar 并更新它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28609536/
如果我有一个 primefaces 组件,比如 ... 在 html 中,它会生成如下内容: ...A lot of things in here... $(function(){Pr
我正在尝试访问文档上的 primefaces 组件,如下所示: $(function() { var showDialog = getUrlParameter("showDialog"); i
我试图弄清楚如何通过使用 Tab 键聚焦面板上的加号然后按键盘上的 Space 来调用 toggle() 方法。假设我有多个面板并且不能使用 widgetVar 属性。
有人可以将我重定向到一个网络资源,在那里我可以找到所有列表 widgetVar JavaScript 函数列表,例如。切换(),显示(),隐藏()等等。 感谢您的回复。 最佳答案 在 PrimeFac
我有一个 Primefaces 命令按钮,它在其 onComplete 中调用一个数据表过滤器。数据表由 widgetVar 引用: 问题是,当按下这个按钮时,fishTable 并不总是存在。它不
我想删除选择错误类型的文件时的错误消息。我点击了链接http://forum.primefaces.org/viewtopic.php?f=3&t=23853 . 然后我导入 在library.js
我正在使用 PrimeFaces 6.1 widgetVar 启用和禁用网页上的多个元素。我正在使用以下代码: JavaScript/jQuery: PF('widget_select_one_but
我有一组 primefaces 复选框 (p:selectBooleanCheckbox),每个复选框都有一个定义的 widgetVar ( widgetVar="rowCheckbox_0"、 wi
我要从 Primefaces 5.2 迁移到 6.1。但是,我在 inputNumber 中使用了 widgetVar,用于使用 javascript 解析操作。但是,widgetVar 在 6.1
我有一个带有小部件 var 的 p:dialog,还有一个只需说 PF(widgetvarval).show() 就可以打开该对话框的按钮,就像一个魅力在 Firefox 和 chrome 上,但在
我有一个像这样的 primefaces 组件: 我正在尝试在 javascript 上下文中获取组件并更新它。 我已经尝试过: function getWidgetVarById(id) {
我遇到了一个问题,即 id 属性和 widgetvar 具有相同的 id,显然不建议这两个属性具有相同的值。所以我试图找到最好遵循的惯例。是否有特殊(保留)字符不能使用,例如句点等。谢谢 最佳答案 只
根据这个问题:Multiple file upload with extra inputText我可以通过使用 widgetVar 以这种方式覆盖 PrimeFaces 元素的 JavaScript
我正在尝试打印 内生成的一些图表对象标签。 我知道常规的由于使用 HTML5 Canvas...es,标签无法与 primefaces 图表一起使用?坎维? 无论如何,我捕获了this JS fun
根据这个问题:Multiple file upload with extra inputText我可以使用 widgetVar 以这种方式覆盖 PrimeFaces 元素的 JavaScript 函数
我有一个 迭代 List并创建一个 与 中的当前字符串的值. 但是当我添加 widgetVar给我的的属性值始终是上次迭代的字符串。 有人可以解释发生了什么并且(我需要 widgetVar )也许可
我在一个页面上有几个 PrimeFaces 复选框。如果单击主复选框,则应选中/取消选中所有其他复选框。使用纯 HTML 复选框,这将是一个简单的问题。但是由于 PrimeFaces 不显示复选框本身
我一直在四处寻找与 PrimeFaces widgetVars Javascript 组件相关的任何文档,寻找 API 和任何相关文档。 我发现虽然 PF JSF 组件在 PF docs 中有详细记录
我是一名优秀的程序员,十分优秀!