我正在使用JSF(2.2)和JPA进行懒惰的表格分页。我们的想法是选择数据表通过<h:selectOneMenu ... />
和AJAX显示每页的行数,但是当我选择一个值(5,10,15,20,25)时,itemsPerPage
属性始终设置为0
查看
<h:outputLabel for="itemsPerPage" value="Items por página" />
<h:selectOneMenu id="itemsPerPage" styleClass="form-control"
value="#{userPaginatorBean.itemsPerPage}"
converter="javax.faces.Integer">
<f:selectItem itemValue="5" itemLabel="5" />
<f:selectItem itemValue="10" itemLabel="10" />
<f:selectItem itemValue="15" itemLabel="15" />
<f:selectItem itemValue="20" itemLabel="20" />
<f:selectItem itemValue="25" itemLabel="25" />
<f:ajax event="change" listener="#{userPaginatorBean.changeItemsPerPage}"
execute="@this" render=":usersDatatable :messages" />
</h:selectOneMenu>
豆
@Named
@ViewScoped
public class UserPaginatorBean implements Serializable {
@Inject
private UserService userService;
private List<User> users;
...
private int itemsPerPage;
private int totalPages;
@PostConstruct
public void init() {
itemsPerPage = 5;
totalPages = ((Long)userService.count()).intValue() / itemsPerPage;
users = userService.getFirst(itemsPerPage);
}
// getters and setters
public void changeItemsPerPage(AjaxBehaviorEvent event) {
users = userService.getFirst(itemsPerPage);
// always prints '0'
System.out.println("New itemsPerPage value: " + itemsPerPage);
}
...
}
不会抛出任何异常,<h:messages id="messages" />
也不显示任何内容。
¿为什么会这样?
感谢。