SelectOneMenu始终在支持bean属性中设置为0

时间:2016-02-02 14:14:10

标签: jsf jsf-2

我正在使用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" />也不显示任何内容。

¿为什么会这样?

感谢。

0 个答案:

没有答案