PrimeFaces+;SWF:commandButton不';t根据源对象触发dataTable中的任何操作/事件
我遇到了一个奇怪的问题/错误,在任何地方都找不到有效的解决方案 情况是:我有一个SpringWebFlow调用一个视图状态,其中包含一个dataTable,显示一个对象列表,每个对象旁边都有一个“编辑”按钮 以下是SWF的外观:PrimeFaces+;SWF:commandButton不';t根据源对象触发dataTable中的任何操作/事件,primefaces,datatable,flash,commandbutton,Primefaces,Datatable,Flash,Commandbutton,我遇到了一个奇怪的问题/错误,在任何地方都找不到有效的解决方案 情况是:我有一个SpringWebFlow调用一个视图状态,其中包含一个dataTable,显示一个对象列表,每个对象旁边都有一个“编辑”按钮 以下是SWF的外观: 一些解释: 1) “MyObject”类是一个简单的pojo,具有一些属性和用于持久性的实体注释 2) “myObjectService.findAll()”返回所有存储的“MyObject”的列表 下面是视图代码(使用模板standard.xhtml): 结果表
一些解释:
1) “MyObject”类是一个简单的pojo,具有一些属性和用于持久性的实体注释
2) “myObjectService.findAll()”返回所有存储的“MyObject”的列表
下面是视图代码(使用模板standard.xhtml):
结果表
名称#{item.Name}
说明#{item.Description}
随便{item.随便}
行动
当我单击其中一个“编辑”按钮时,跟踪告诉我视图正在重新渲染,但动作/事件“编辑”从未在任何地方触发、检测或捕获(至少我知道)
有趣的是:如果我将对服务的调用(加载对象列表)从流移动到视图中的dataTable“value”属性,如下所示:
这个问题很久以前就被问过了,但现在我面临着同样的问题。这就是我发现的
最后一个SWF预订面(WebFlow:2.4.0.M1)示例也有相同的问题
在“main flow.xml”中,它定义了:
<view-state id="enterSearchCriteria">
<on-render>
<evaluate expression="bookingService.findBookings(currentUser?.name)" **result="viewScope.bookings"** result-type="dataModel" />
</on-render>
<transition on="search" to="reviewHotels"/>
<transition on="cancelBooking">
<evaluate expression="bookingService.cancelBooking(bookings.selectedRow)" />
</transition>
</view-state>
在“enterSearchCriteria.xhtml”中,它声明了一个迭代预订的
。
dataTable具有以下列定义:
<p:column>
<f:facet name="header">Action</f:facet>
<p:commandButton id="cancel" value="Cancel" action="cancelBooking" update=":bookings"/>
</p:column>
行动
单击“取消”按钮时,不会发生任何事情。通过查看跟踪,我可以看到视图正在重新渲染,但从未调用“bookingService.cancelBooking(bookings.selectedRow)”方法
但是,如果我将“bookings”变量的范围更改为“conversationScope”,它将起作用:
<view-state id="enterSearchCriteria">
<on-render>
<evaluate expression="bookingService.findBookings(currentUser?.name)" **result="conversationScope.bookings"** result-type="dataModel" />
</on-render>
<transition on="search" to="reviewHotels"/>
<transition on="cancelBooking">
<evaluate expression="bookingService.cancelBooking(bookings.selectedRow)" />
</transition>
</view-state>
这是viewScope/flowScope的错误吗?尝试将immediate=“true”
属性添加到commandButton
。
这使按钮的优先级高于验证,应该处理操作