2012-09-19 36 views
6

Quiero convertir cadenas en enteros en JSF hLselectOneMenu.Cómo convertir cadena en entero en h: selectOneMenu

<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" /> 

¿Cómo puedo hacer esto en la página JSF?

P.S Actualicé el código pero el código AJAX no funciona. Cuando selecciono "personalizado", el campo de entrada no se representa.

Respuesta

5

Hay algunos problemas aquí.

  • no hay ningún atributo llamado size del componente h:selectOneMenu. Elimina esto.

  • El elemento de selección custom no se puede resolver en un entero, por lo que siempre que este elemento seleccione, obtendrá errores.

  • Necesita agregar un convertidor de número a su componente h:selectOneMenu. <f:convertNumber integerOnly="true" />

Una vez que resuelva estos entonces no habrá vinculante el valor del componente a una propiedad administrada que es un tipo entero problema.

+0

+1 por sugerir que no hay ningún atributo de tamaño en h: selectOneMenu. Me encontré con este mismo problema al convertir un h: inputText a un h: selectOneMenu. – Catfish

14

Agregue el convertidor entero a través del atributo convertidor.

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

Tenga en cuenta que esto no funciona con PrimeFaces ''. Aparte de eso, el componente no parece requerir esto en absoluto. (solo para aquellos que lo buscan en google) – Kawu

+0

@Kawu La mayoría de las veces el componente puede detectar el tipo del valor _ enlazado_ sin problemas. Hay casos en que esto no funcionará, por ejemplo, el uso de genéricos: en el momento de la compilación, se sabe que hay un _Integer_, pero en bytecode es un _Objeto_. ¡Aquí esta solución ayuda! – DaniEll

Cuestiones relacionadas