【发布时间】:2011-10-09 08:53:14
【问题描述】:
Primefaces 2.2.1
Mojarra 2.1.2
我的 jsf bean 中有一个复杂的方法:
public void saySomething() {
log.debug("SAY SOMETHING !");
}
还有一个简单的 jsf 按钮:
<p:commandButton
value="say something"
process="@this" update="@none" action="#{timetableBean.saySomething}" />
点击按钮,我的简单日志记录:
DEBUG PhaseTracker - BEFORE PHASE INVOKE_APPLICATION 5
DEBUG TimetableBean - SAY SOMETHING !
DEBUG PhaseTracker - AFTER PHASE INVOKE_APPLICATION 5
让我们转到下一个简单的案例。 当像这样将相同的按钮放在 p:dataList 中时:
<p:dataList id="groupUsers2" value="#{timetableBean.group.users}" var="user" itemType="circle" style="padding:0; margin: 0;">
<p:commandButton
value="#{user.data['selected'] ? 'V' : 'X'}"
process="@this" update="@none" action="#{timetableBean.saySomething}" />
<p:commandLink value="#{user.userId} - #{user.name}" process="@this" />
</p:dataList>
点击按钮,我的简单日志记录:
DEBUG PhaseTracker - BEFORE PHASE INVOKE_APPLICATION 5
DEBUG PhaseTracker - AFTER PHASE INVOKE_APPLICATION 5
saySomething() 的方法没有被调用!
我做错了什么?
【问题讨论】:
-
问题可能出在
process属性上。这是什么意思,因为将为#{timetableBean.group.users}的每个元素创建一个commandButton 组件。@this应该实际处理什么? -
@maple_shaft:我把它改成了process="@form",还是不行,监听方法没有被调用..
标签: jsf-2 primefaces