【问题标题】:Primefaces how to fire another event after datatable select eventPrimefaces如何在数据表选择事件后触发另一个事件
【发布时间】:2013-04-25 12:18:25
【问题描述】:

我有一个带有选择和命令按钮的数据表。问题是如果用户没有从数据表中选择任何项目并单击按钮,则 selectedItem 对象返回 null。我认为数据表的选择事件在我的命令按钮的操作方法之后运行。

我想做的是; 如果用户没有从数据表中选择任何项目并单击按钮,我将创建一个新的 SelectedItem 对象。但是按钮的action方法运行后,datatable会变成null。

<p:panel id="panel1">
<p:dataTable selection="#{myController.selectedItem}"
             selectionMode="single"....
//some other stuff
</p:panel>

<p:panel id="panel2">
//some other stuff
<p:commandButton value="Create" action="myController.create"....
</p:panel>

我的控制器;

SelectedItem selectedItem = new SelectedItem();

public void create(){
 selectedItem = new SelectedItem();
}

【问题讨论】:

  • 如果用户没有选择,那么选择哪一行?
  • @Darka 如果用户没有选择,我想创建一个新的 SelectedItem 对象。我的意思是如果用户不选择,我与数据表无关。但问题是数据表在我单击按钮后将我的 selectedItem 更改为 null。
  • 抱歉再读一次你的评论。如果要创建新的,则需要将数据添加到 selectedItem = new SelectedItem();类似于 selectedItem.setName('TOM');
  • 将 ACTION 改为 actionListener 并添加 Update dataTable
  • "selectedItem = new SelectedItem()" 不等于 "selectedItem = null"

标签: jsf jsf-2 primefaces datatable


【解决方案1】:

你可以试试这个:
.xhtml

<p:dataTable var="result" selection="#{myController.selectedItem}"
         selectionMode="single"....

<p:commandButton actionListener="#{myController.create()}">
    <f:setPropertyActionListener value="#{result}" target="#{myController.selectedItem}" />  
</p:commandButton>      

.java

SelectedItem selectedItem = new SelectedItem();  

public void create(){
  selectedItem = new SelectedItem();
}

【讨论】:

  • 也许,他的意思是 var from dataTable: p:dataTable var="result"
  • var p:dataTable 属性之一,var="result"
猜你喜欢
  • 2021-08-15
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
相关资源
最近更新 更多