2012-09-19 50 views
6

Tôi muốn chuyển đổi chuỗi thành số nguyên trong JSF hLselectOneMenu.Cách chuyển đổi chuỗi thành số nguyên trong 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" /> 

Làm cách nào tôi có thể thực hiện việc này trong trang JSF?

P.S Tôi đã cập nhật mã nhưng mã AJAX không hoạt động. Khi tôi chọn "tùy chỉnh", trường nhập sẽ không được hiển thị.

Trả lời

5

Có một số vấn đề ở đây.

  • Không có thuộc tính nào có tên size của thành phần h:selectOneMenu. Tháo cái này.

  • Mục chọn custom không thể được giải quyết thành số nguyên, miễn là mục chọn này tồn tại, bạn sẽ gặp lỗi.

  • Bạn cần thêm công cụ chuyển đổi số vào thành phần h:selectOneMenu của mình. <f:convertNumber integerOnly="true" />

Khi bạn giải quyết xong thì sẽ không có vấn đề nào ràng buộc giá trị của thành phần với thuộc tính được quản lý là loại Integer.

+0

+1 cho thấy rằng không có thuộc tính kích thước trên h: selectOneMenu. Tôi chạy vào cùng một vấn đề này chuyển đổi h: inputText thành h: selectOneMenu. – Catfish

14

Thêm bộ chuyển đổi Integer qua thuộc tính chuyển đổi.

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

Lưu ý rằng điều này không hoạt động với PrimeFaces ''. Bên cạnh đó, các thành phần dường như không yêu cầu điều này cả. (chỉ dành cho những người google này lên) – Kawu

+0

@Kawu Hầu hết thời gian các thành phần có thể phát hiện các loại _value_ ràng buộc mà không có vấn đề. Có những trường hợp mà điều này sẽ không hoạt động - Ví dụ sử dụng Generics: Tại thời gian biên dịch nó được biết có một _Integer_ nhưng trong bytecode nó là một _Object_. Ở đây giải pháp này giúp! – DaniEll

Các vấn đề liên quan