Jsf f:setPropertyActionListener未被随机调用
我面临着Jsf f:setPropertyActionListener未被随机调用,jsf,primefaces,Jsf,Primefaces,我面临着标签的奇怪行为。有时,更奇怪的是,它会随机停止工作,因此在操作开始之前不会调用setter方法(我快速翻译了意大利语的消息,只是为了告诉您发生了什么)。 这是: <p:treeTable value="#{addestramentoController.addestramenti}" id="addestramentiTree" var="addr" scrollable="true" scrollHei
标签的奇怪行为。有时,更奇怪的是,它会随机停止工作,因此在操作开始之前不会调用setter方法(我快速翻译了意大利语的消息,只是为了告诉您发生了什么)。
这是:
<p:treeTable value="#{addestramentoController.addestramenti}"
id="addestramentiTree"
var="addr" scrollable="true"
scrollHeight="200"
emptyMessage="No training in database.">
<f:facet name="header">
Training List
</f:facet>
<p:column .... />
<p:column style="width:20px; text-align: center">
<p:commandLink rendered="#{(addr.dataAddestramento ne null)}"
oncomplete="PF('confirmDlg').show()"
title="Delete training"
styleClass="ui-icon ui-icon-closethick">
<f:setPropertyActionListener value="#{addr}"
target="{addestramentoController.item}"/>
</p:commandLink>
</p:column>
</p:treeTable>
EJB中的aServ,一切正常,但有时不正常<代码>设置项根本不被调用,导致EJB服务方法中出现NPE。正如您在
中所看到的,我使用了动作
,但我也尝试了动作监听器
。我不知道我的代码出了什么问题,但它与PrimeFaces showcase中使用的代码相同,应该可以开箱即用。我在开发测试期间从未遇到过这个问题,而且(显然)它只发生在部署环境中
以下是我的开发和部署设置:
开发:JDK 8u25_x64-NB 8.0.2-GF 4.1,PrimeFaces 5.1社区使用Mojarra 2.2.7 impl
部署:JDK 8u25_x64-Wildfly 8.0.0最终版本与Mojarra 2.2.5-jbossorg-3
也许是莫哈拉的问题
谢谢你抽出时间
编辑:好吧,忘了告诉你……支持bean是一个视图范围的
bean。当你点击给定的
时,
会出现吗(我想它应该根据oncomplete=“PF('confirmDlg')。show()“
)?
的过程
属性默认为@form
。因此,症状可能是,当单击整个表单时,它有时可能会不必要地处理/执行整个表单,从而导致一些意外行为。请尝试将该
的进程属性设置为@this
,例如
?此外,您忘记了
这里的目标=“{addestramentoController.item}”
。它应该类似于target=“#{addestramentoController.item}”
。仔细看(除非是打字错误)。@Tiny the#是由于复制粘贴造成的打字错误。是的,对话框出现,动作开始,但未调用侦听器(随机调用或仅在第一次调用后调用?不知道)。我将尝试放置process=“@this”
properties并让您知道。非常感谢。
<!-- Confirm Dialog -->
<p:confirmDialog id="confirm"
widgetVar="confirmDlg"
message="Delete training?"
header="Confirm"
severity="alert"
closeOnEscape="true">
<p:commandButton value="Yes"
action="#{addestramentoController.doDelete}"
update="addestramentiTree nuovoAddestramento"
oncomplete="PF('confirmDlg').hide();"
icon="ui-icon-check"/>
<p:commandButton value="No" type="button"
onclick="PF('confirmDlg').hide();"
icon="ui-icon-close"/>
</p:confirmDialog>
<!-- ////////////// -->
public void setItem(VolAddestramento item) {
// Really this should NEVER happen!
if (item == null) {
setDialogMessage(new DialogMessage("Error", "Error Message"));
}
this.item = item;
}
public void doDelete() {
// Delete selected training
aServ.deleteAddestramento(item);
// Update table data
fillAddestramenti();
}