2012-04-05 24 views
6

Tôi có một danh sách thả xuống p:selectonemenu và hộp kiểm , khi tôi chọn hộp kiểm, tôi muốn đặt selectonemenu thành giá trị cụ thể. Và tôi không muốn người dùng thay đổi nó, vì vậy tôi đặt thuộc tính selectonemenudisabled thành true. Tuy nhiên, khi nó bị vô hiệu hóa, giá trị của nó không xuất hiện bên trong bản đồ tham số yêu cầu, khi tôi thực hiện facescontext.getcurrentinstance().getexternalcontext().getrequestparametermap() và tôi cần giá trị của nó cho bản đồ này. Có cách nào để giải quyết vấn đề này không?JSF: khi vô hiệu hóa thành phần, giá trị của nó không được đưa vào tham số ánh xạ yêu cầu. Có cách giải quyết nào không?

Tôi viết phông chữ vào hệ thống Servlet cũ, nơi họ sử dụng tham số bản đồ yêu cầu để lấy giá trị thuộc tính biểu mẫu.

+2

Nó không xuất hiện vì khi thành phần bị tắt, trình duyệt không gửi giá trị thành phần đến máy chủ. Tìm thông số "chỉ đọc". –

+0

@AdrianMitev: Thật không may, mặc dù thành phần JSF 'h: selectonemenu' có thuộc tính' readonly', thành phần phần tử 'p: selectonemenu' không –

Trả lời

8

Như Adrian Mitev đã chỉ ra trong nhận xét, vô hiệu hóa thành phần selectBooleanCheckbox sẽ có nghĩa là nó sẽ không đăng giá trị của nó trên một biểu mẫu gửi.

Tuy nhiên, bạn có thể có trường nhập ẩn, trong đó bạn có thể đặt giá trị cho thuộc tính bean được quản lý giống như hộp kiểm.

<h:inputHidden id="checkDisabled" value="#{managedBean.someValue}" /> 

Sử dụng javascript bạn có thể đặt giá trị của đầu vào bị ẩn này khi hộp kiểm bị tắt.

+2

Điều này thực hiện theo cách không áp dụng cụ thể cho hộp kiểm, nhưng đối với tất cả các nút và thành phần đầu vào HTML nói chung. Nếu 'disabled =" true "', thì tên = giá trị của nó sẽ không được gửi dưới dạng tham số yêu cầu. Điều này theo [đặc tả HTML] (http://www.w3.org/TR/html401/interact/forms.html#h-17.12.1): * "Các điều khiển bị tắt không thể thành công." * – BalusC

+0

@BalusC: Vấn đề trên cũng gây rắc rối cho tôi, vì thành phần JSF không có thuộc tính 'name' (tôi nghĩ bạn đặt' name' nhưng đặt 'id'), và nếu tôi đặt thuộc tính' id' của ' 'component, giống như' selectonemenu', sau đó tôi nhận ngoại lệ này 'Component ID cmbxFgnFormNumber đã được tìm thấy trong khung nhìn ' –

+4

ID được tạo ra dưới dạng tên. Kiểm tra nguồn HTML. Đối với vấn đề mới, hoặc đưa ra hộp kiểm bị vô hiệu hóa một ID khác, hoặc sử dụng đồng bằng '' thay vào đó (điều này sẽ không thêm ID biểu mẫu). – BalusC

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