Java @ViewAccessScope未首次获取所选行
我使用的是JSF2.0,我有一个数据表,它是使用惰性加载填充的。页面的范围是Java @ViewAccessScope未首次获取所选行,java,jsf-2,cdi,myfaces,Java,Jsf 2,Cdi,Myfaces,我使用的是JSF2.0,我有一个数据表,它是使用惰性加载填充的。页面的范围是@viewAccessScope(MyFacesCodi),就像我使用的是CDI/Spring一样 在jsf页面中加载datatable时,当我第一次选择一行(radiobutton)时,我无法获得选中的行,对于后续的选择,我可以在ManagedBean的onRowSelect方法中获得选中的行。如果我使用会话范围,那么当我第一次选择行时,我就能够获得所选行 JSF Code <p:dataTable id="d
@viewAccessScope
(MyFacesCodi),就像我使用的是CDI/Spring一样
在jsf页面中加载datatable时,当我第一次选择一行(radiobutton)时,我无法获得选中的行,对于后续的选择,我可以在ManagedBean的onRowSelect方法中获得选中的行。如果我使用会话范围,那么当我第一次选择行时,我就能够获得所选行
JSF Code
<p:dataTable id="dataTable" var="req" lazy="true" value="#{emp.lazyModel}"
rowKey="#{req.empNo}"
paginator="true" rows="10"
selection="#{emp.selectedRequest}">
<p:ajax event="rowSelectRadio" listener="#{emp.onRowSelect}" />
<p:column selectionMode="single" style="width:18px" />
我已经解决了这个问题,问题是cookies 首次加载list.jsf时,未设置cookies。所以,当用户选择一行时,cookies会被设置,因此对于后续的选择,用户可以获得所选的行值 为了解决这个问题,我创建了一个index.jsp页面并重定向到list.jsf,这样在用户使用单选按钮选择行之前就可以设置cookies
谢谢这是一个PrimeFaces错误。@DarWhi有什么解决办法吗?我们刚刚创建了自己的组件,因为我们还需要更多的功能,这从来都不是问题。@DarWhi你能详细介绍一下创建自己的组件吗?这只是一组自定义的内部JSF组件。奇怪的是需要它。CODI自动执行初始重定向。将窗口ID添加到URL。但不管怎么说,这都是个大问题。
@Named("emp")
@ViewAccessScoped
public class EmployeeManagedBean implements Serializable {
private Employee selectedRequest = new Employee();
@PostConstruct
public void init() {
initTable();
}
private void initTable() {
lazyModel = new LazyEmployeeDataModel(requestList, requestService);
}
public LazyDataModel<Employee> getLazyModel() {
return lazyModel;
}
public void onRowSelect(SelectEvent event) {
try {
setSelectedRequest((Employee) event.getObject());
System.out.println("row "
+ getSelectedRequest());