Я пытаюсь создать модал для отправки выбранных пользователем запросов на адрес электронной почты; Однако у меня возникают проблемы при получении выбранных пользователем запросов. Я продолжаю получать нулевое значение, переданное через fooBean.setSelected(id)
.
Версия:
- BootsFaces: 1.3.0
- Java: 1.8.0
- JSF: 2,0
- Браузер: Internet Explorer 11.2x
MCVE thisThing.xhtml:
<b:dataTable value="#{fooBean.newRequests}"
var="foo"
onselect="ajax:fooBean.setSelected(id)"
ondeselect="ajax:fooBean.setSelected(id)"
selectedItems="row"
selection-mode="multiple"
selectedRows="#{foo.selected}"
saveState="false">
<b:dataTableColumn label="Select">
<b:selectBooleanCheckbox value="#{foo.selected}" />
</b:dataTableColumn>
<b:dataTableColumn label="Status" value="#{foo.status}" />
<b:dataTableColumn label="Request Number"
value="#{foo.requestNumber}"
data-type="string" />
<b:dataTableColumn label="ID" value="#{foo.id}" />
<b:dataTableColumn value="#{foo.storeName}"
label="Store Name" />
</b:dataTable>
MCVE из fooBean.java:
@ManagedBean(name="fooBean")
@ViewScoped
public class fooBean extends BeanBase implements Serializable {
private List<FooRecord> fooRecords = new ArrayList<FooRecord>();
private List<FooRecord> selectedFooRecords = new ArrayList<FooRecord>();
// ...
public void setSelected(String requestId) {
// This is not how I really do it, but it gives an idea
// with what I intend to do.
this.fooRecords.stream().filter(...).toggleSelection();
this.selectedFooRecords.stream().filter(...).toggleSelection();
}
}
Обновление:
Я обнаружил, что у меня есть метод, называемый getSelect
вместо getSelected
, поэтому я исправил его, и эта часть выполнена. Я только что вспомнил реальную проблему, которая заключается в том, что вместо requestId передается нулевой параметр. Когда я отлаживаю через fooBean.getSelected(String requestId)
, в качестве параметра передается null
. Я даже попробовал:
<!-- Using varName.property -->
onselect="ajax:fooBean.setSelected(foo.id)"
<!-- Using just the property name -->
onselect="ajax:fooBean.setSelected(id)"
<!-- Using the loop variable -->
onselect="ajax:fooBean.setSelected(foo)"
Обновление 2:
Как передать foo.id
в функцию?