Chr*_*Geo 10 jsf facelets primefaces
我有一个数据表,它显示基于List <>的各种实体.当我选择一个单元格进行编辑时,我希望能够以某种方式获取实体以便更新它.当然有event.getRowIndex,然后我可以使用List <>,但这并不总是方便的.是否有另一种方法可以从CellEditEvent获取实体?
Bal*_*usC 27
一种方法是以编程方式EL评估当前<p:dataTable var>
.
给出一个
<p:dataTable value="#{bean.entities}" var="entity">
Run Code Online (Sandbox Code Playgroud)
你可以得到如下
public void onCellEdit(CellEditEvent event) {
FacesContext context = FacesContext.getCurrentInstance();
Entity entity = context.getApplication().evaluateExpressionGet(context, "#{entity}", Entity.class);
// ...
}
Run Code Online (Sandbox Code Playgroud)
另一种方法,如果你对CellEditEvent
参数不感兴趣,那就是CellEditEvent
通过将当前迭代的实体作为参数传递来完全覆盖参数:
<p:ajax event="cellEdit" listener="#{bean.onCellEdit(entity)}" />
Run Code Online (Sandbox Code Playgroud)
同
public void onCellEdit(Entity entity) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
请注意,您无法保留CellEditEvent
并传递其他参数.否则显然会给出这个答案.
use*_*596 12
我一直在努力解决这个问题二,我不喜欢依赖var名称,所以我找到了这个解决方案:
public void onCellEdit(CellEditEvent event) {
Entity entity =(Entity)((DataTable)event.getComponent()).getRowData();
}
Run Code Online (Sandbox Code Playgroud)
请注意,实体更新后可以直接合并到DB中,也可以获得旧值.PS:谢谢你@BalusC的一切:)
归档时间: |
|
查看次数: |
10054 次 |
最近记录: |