这是我的桌子的外观:
+ --------- + ------------ + ------------------- +
| 标头1 | 标头2 | 标头3 |
+ --------- + ------------ + ------------------- +
| A行| 输入A | 计算输出A |
| B行| 输入B | 计算输出B |
| 等。等。等。
+ --------- + ------------ + ------------------- +
| 总计:计算出的总输出|
+ ------------------------------------------ +
以及简化的代码:
<p:dataTable id="myTable" value="#{myBean.someList}"
var="currentItem">
<p:column headerText="Header1">
<h:outputText value="#{currentItem.name}" />
</p:column>
<p:column headerText="Header2">
<pe:inputNumber value="#{currentItem.inputVal}">
<p:ajax event="change" listener="#{myBean.changeListener}"
update="outputVal outputTotal" />
</pe:inputNumber>
</p:column>
<p:column headerText="Header3">
<h:outputText id="outputVal" value="#{currentItem.outputVal}" />
</p:column>
<f:facet name="footer">
Total:
<h:outputText id="outputTotal" value="#{myBean.total}" />
</f:facet>
</p:dataTable>
该myBean.someList
是ArrayList<SomeOtherBean>
一个字符串和两个整数,只有getter和setter。在myBean.changeListener
计算第二整数从第一给定的行,也总让所有行。
因此,当我输入其中一个输入然后进行聚焦时,将调用侦听器并完成计算,但是在屏幕上,第三列中的值发生了变化,但总数固执地保持为零。我相当确定这与PrimeFaces关联,该行将行索引附加到每个输入和输出的生成ID中,但是我不知道如何在页脚中找到输出(生成的ID为mainForm:myTable:0:outputTotal
)。
现在,我可以更新父表。但是,只要接收焦点的输入是更新目标的一部分,焦点就会丢失,而且我在极其严格的可访问性规则下,该表 必须
是键盘友好的(键入数字,制表符,键入数字,制表符等。) )
我努力了:
(带有MyFaces未知版本的PrimeFaces 3.5.0)
您实际上无法从表中更新表的值。但是,您可以使用它p:remoteCommand
来实现。另外,我可能会使用对整个表cellEdit事件(而不是单个p:ajax
你的pe:inputNumber
)。总体结果将是:
<p:remoteCommand name="refreshFooter" update=":formName:outputTotal"/>
...
<p:dataTable id="myTable" value="#{myBean.someList}" var="currentItem">
<p:column headerText="Header1">
<h:outputText value="#{currentItem.name}" />
</p:column>
<p:column headerText="Header2">
<pe:inputNumber value="#{currentItem.inputVal}">
<p:ajax event="change" listener="#{myBean.changeListener}" process="@this"
oncomplete="refreshFooter();" update="outputVal"/>
</pe:inputNumber>
</p:column>
<p:column headerText="Header3">
<h:outputText id="outputVal" value="#{currentItem.outputVal}" />
</p:column>
<f:facet name="footer">
Total:
<h:outputText id="outputTotal" value="#{myBean.total}" />
</f:facet>
</p:dataTable>
请注意,您 可能需要
添加partialSubmit="true"
到中p:ajax
,这样仅提交组件的数据。如果您喜欢cellEdit事件的想法,则需要使dataTable可编辑,并在中添加以下内容p:dataTable
,并摆脱掉p:ajax
内部pe:inputNumber
<p:ajax event="cellEdit" partialSubmit="true" listener="#{myBean.onCellEdit}"
process="@this" oncomplete="refreshFooter();"/>
祝好运!
在我的应用程序中,我有一个PF布局,在西部有一个树节点,在中部有一个内容部分,我想在其中使用ajax技术动态加载不同的页面 为了获得它,这个内容部分包含一个ui:include
问题内容: 我想Ajax使用Primefaces更新JavaScript脚本。 我如何在showMarker中将该值更新为ajax? 问题答案: 将其放在JSF标记中并提供ID。 并有一个按钮或链接是否执行某些操作,并对此进行更新
我有下一个代码: 我还有一些按钮,可以从表中删除元素并对其进行更新。但是我如何更新这个表呢?哪些参数应该在更新中?我尝试了更新=“:tableForm”和更新=“:tableTabView:tableForm”和更新=“:tableTabView”,但没有得到结果。我哪里错了?
我的xhtml中有下一个结构 方法searchAnimals()可以,它返回动物项,但dataTable不刷新,但在java代码(managedBean)中,ArrayList包含这些项。我能做什么?谢谢编辑:我正确地使用了de h:和p:后缀(我想是的),代码是完整代码的一部分,但它是无法正确工作的片段。在第一个面板中,我有一个过滤器控件(按类别、按日期等),命令按钮的功能是调用一个在数据库上执
问题内容: 我已经使用facelets模板完成了一个基本的JSF应用程序。我的模板如下: 然后,我有一个 主页 (如下所示),它导航到 第二页 。两个页面都使用上面的模板。 如果我在faces-config.xml中使用它,它将进行导航,但是将重新加载 整个 页面。我的问题是: 有没有一种方法可以从页面导航到另一个仅更新模板部分的内容?(同时保留页面的其余部分不变) 谢谢! 问题答案: 您可以通过
问题内容: 我想使用Primefaces 5.2创建一个移动表单,其中一个结果通过Ajax 更新第二个,就像这里的展示示例一样:http : //www.primefaces.org/showcase/ui/ajax/dropdown.xhtml,然后是移动版本。 我创建了一个JSF页面和backingbean 正是 像展示例子,它的工作原理。 但是,当我使用第二个元素添加移动外观时,更新后将其呈