2008-11-28 90 views

Trả lời

3

Giá trị có nghĩa là để gửi trong một đối tượng SelectItem và không phải là một String như itemValue. ItemValue là giá trị các mục, được chuyển tới máy chủ dưới dạng tham số yêu cầu, nhưng giá trị là một biểu thức ràng buộc giá trị trỏ đến một cá thể SelectItem.

Nếu bạn nhìn vào JSF này:

<h:selectOneRadio value=""> 
    <f:selectItem itemValue="TestValue" itemLabel="TestLabel" /> 
</h:selectOneRadio> 

mà biến thành HTML này:

<table> 
    <tr> 
    <td> 
     <input type="radio" name="j_id_id9" id="j_id_id9:0" value="TestValue" /> 
     <label for="j_id_id9:0"> TestLabel</label> 
    </td> 
    </tr> 
</table> 

Vì vậy value = valueBinding trỏ đến một SelectItem trong bean được quản lý của bạn, và itemValue = giá trị mà đang được gửi. Nếu bạn quyết định thêm một giá trị = "# {TestBean.mySelectItem}" nó sẽ không thay đổi HTML được xuất ra theo bất kỳ cách nào, nhưng việc thực hiện JSF sẽ biết rằng thuộc tính getter cho trường mySelectItem sẽ được sử dụng trong trường hợp này.

Chỉnh sửa: Để làm rõ câu trả lời thêm một chút. Thuộc tính value của SelectItem liên kết SelectItem với một trường SelectItem trong bean được quản lý thông qua các thuộc tính getter và setter. Nếu bạn đặt giá trị như thế này:

<h:selectOneRadio value=""> 
    <f:selectItem itemValue="TestValue" itemLabel="TestLabel" value="#{TestBean.mySelect}"/> 
</h:selectOneRadio> 

nó sẽ gọi phương thức getMySelectItem() trong TestBean. Như bạn có thể thấy điều này không có gì để làm với itemValue như itemValue là resposible của thiết lập giá trị của những gì đi trong yêu cầu khi người dùng gửi biểu mẫu. Các itemValue sau đó sẽ được lưu trữ trong h: giá trị selectOneRadio của mà hy vọng bạn đã bị ràng buộc lên đến một lĩnh vực chuỗi như thế này:

<h:selectOneRadio value="#{TestBean.selectedRadioValue}"> 
<f:selectItem itemValue="1" itemLabel="1. radio one" /> 
<f:selectItem itemValue="2" itemLabel="2. radio two" /> 
</h:selectOneRadio> 

Bây giờ nếu người dùng kiểm tra radio mà ông trông giống như: "1. đài phát thanh một "giá trị" 1 "sẽ được lưu trữ trong biến của TestBean được gọi là selectedRadioValue

+1

Tôi nghĩ rằng bạn đã có một câu trả lời (bản gốc) tốt hơn ở đây, nhưng tôi đã đọc câu đầu tiên đó 4 lần, và vẫn gặp khó khăn khi hiểu nó. Làm rõ? – jmanning2k

+0

Tôi đồng ý với Jon (trên phần trả lời "tốt hơn"). +1 – VonC

+0

Ive đã thêm thông tin ngay bây giờ =) Hy vọng điều này sẽ làm rõ mọi thứ –

0

Từ bài viết này của IBM Adding row selection to a JSF datatable using radio buttons:

id thuộc tính là cho giá trị thành phần của nút radio Group. Nó sẽ bị ràng buộc đến lĩnh vực giá trị gia tăng

attributeid

Thuộc tính selectedRowId là cho giá trị mục của nút radio, và sẽ bị ràng buộc đến lĩnh vực giá trị mục

Item Value

+1

Những hình ảnh đó là bản quyền và không được sử dụng khi chưa được phép. – jmanning2k

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