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

时间:2012-09-19 15:44:46

标签: 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" />

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

P.S我更新了代码,但AJAX代码无效。当我选择“自定义”时,不会渲染输入字段。

2 个答案:

答案 0 :(得分:16)

通过转换器属性添加整数转换器。

<h:selectOneMenu converter="javax.faces.Integer"/>

答案 1 :(得分:5)

这里有一些问题。

  • 组件size没有名为h:selectOneMenu的属性。删除它。

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

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

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