如何在h:selectOneMenu中将String转换为Integer

Pet*_*zov 7 jsf jsf-2

我想在JSF hLselectOneMenu中将String转换为Integer.

<h:selectOneMenu id="rowsPerPage" value="#{AccountsController.rowsPerPage}" converter="javax.faces.Integer" maxlength="3">                                    
    <f:selectItem itemValue="10" itemLabel="10" />
    <f:selectItem itemValue="50" itemLabel="50" />
    <f:selectItem itemValue="100" itemLabel="100" />
    <f:selectItem itemValue="500" itemLabel="500" />                                    
    <f:selectItem itemValue="094332" itemLabel="Custom" />
    <f:ajax render="customrowperpage" />
</h:selectOneMenu>&nbsp;
    <h:inputText id="customrowperpage" value="#{AccountsController.rowsPerPage}" rendered="#{AccountsController.rowsPerPage == '094332'}" required="true" />
Run Code Online (Sandbox Code Playgroud)

我如何在JSF页面中执行此操作?

PS我更新了代码,但AJAX代码无效.当我选择"自定义"时,不会渲染输入字段.

djm*_*jmj 16

通过converter属性添加Integer转换器.

<h:selectOneMenu converter="javax.faces.Integer"/>
Run Code Online (Sandbox Code Playgroud)


map*_*aft 5

这里有一些问题.

  • 没有命名size该组件的属性h:selectOneMenu.删除它.

  • custom无法将选择项解析为整数,因此只要此选择项存在,您将收到错误.

  • 您需要为组件添加数字转换器h:selectOneMenu. <f:convertNumber integerOnly="true" />

一旦解决了这些问题,那么将组件的值绑定到Integer类型的托管属性就没有问题.