2012-05-07 42 views
16

Tôi đang cố gắng có hộp kiểm được chọn mặc định trên hộp thoại thành phần khi chỉnh sửa. Dưới đây là các thuộc tính trên trường:Nhận Hộp kiểm được Kiểm tra Mặc định trong CQ5

jcr:primaryType: widget 
checked: true (boolean) *Documentation says this determines default checked status 
type: checkbox (string) *read this as a fix to making checkbox selections stick 
xtype: selection (string) 
name: ./foo (string) 
fieldValue: true (string) 

Trả lời

17

Có, có vẻ như the documentation là một chút đáng kinh ngạc. Tôi đã thực hiện một số thử nghiệm và kết hợp các thuộc tính này hoạt động cho tôi:

defaultValue (String) true 
fieldLabel (String) Foo Mode 
inputValue (String) false 
jcr:primaryType (Name) cq:Widget 
name (String) ./foomode 
type (String) checkbox 
xtype (String) selection 

Thuộc tính mặc địnhValue dường như là khóa.

Bạn có cq: Tiện ích con cho loại chính của bạn, không phải tiện ích con, phải không?

+2

Cảm ơn bạn rất nhiều. Tôi sẽ không tự mình nghĩ ra sự kết hợp này. C'mon, Adobe, quản lý tài liệu của bạn tốt hơn! –

+0

Tôi đã đối mặt với cùng một vấn đề và làm tồi tệ hơn bởi tài liệu CQ không chính xác. Nhìn sâu hơn vào điều này, kết hợp trên sẽ kết xuất thành công hộp kiểm "đã đánh dấu" trên Hộp thoại nhưng điều đó sẽ không dẫn đến việc thiết lập thuộc tính JCR bên dưới đại diện cho phần tử hộp kiểm này, tức là không có thuộc tính ./foomode được tạo trước cho hộp kiểm này, nó sẽ chỉ được tạo sau khi người dùng truy cập hộp thoại và nhấn nút "OK" ngay cả khi không thực hiện bất kỳ thay đổi nào. –

+0

Thuộc tính nút không được tạo cho đến khi yêu cầu POST tạo chúng. Ngoài ra, hãy nhớ một hộp kiểm không được gửi trừ khi nó được chọn. Đây không phải là chức năng của CQ, nó nằm trong thông số kỹ thuật HTML và được trình duyệt thực hiện. Nếu bạn muốn tạo thuộc tính nút bất kể hộp kiểm có được chọn hay không, hãy sử dụng hậu tố @UseDefaultWhenMissing của SlingPostServlet. Xem tài liệu Apache Sling: https://sling.apache.org/documentation/bundles/manipulating-content-the-slingpostservlet-servlets-post.html#usedefaultwhenmissing. – nateyolles

5

Để có điều này lưu lại dưới dạng Boolean ...

<nodeName 
jcr:primaryType="cq:Widget" 
fieldLabel="check this nodename" 
name="./nodeName" 
defaultValue="{Boolean}false" 
type="checkbox" 
xtype="selection" /> 

<nodeNameHint 
    jcr:primaryType="cq:Widget" 
    ignoreData="{Boolean}true" 
    name="./[email protected]" 
    value="Boolean" 
    xtype="hidden"/> 
1

Để thiết lập hộp với một giá trị mặc định của kiểm tra tiết kiệm tài sản như một loại tài sản Boolean trong JCR (chứ không phải là một String) , sử dụng các thiết lập giao diện cổ điển sau:

<myCheckbox 
    jcr:primaryType="cq:Widget" 
    fieldLabel="My Checkbox" 
    name="./myCheckbox" 
    value="true" 
    defaultValue="true" 
    checkboxBoolTypeHint="{Boolean}true" 
    type="checkbox" 
    xtype="selection"/> 

Hoặc sử dụng các cài đặt sau trong Granite Touch UI:

<myCheckbox 
    jcr:primaryType="nt:unstructured" 
    sling:resourceType="granite/ui/components/foundation/form/checkbox" 
    text="My Checkbox" 
    name="./myCheckbox" 
    value="true" 
    checked="true"/> 
<myCheckboxType 
    jcr:primaryType="nt:unstructured" 
    sling:resourceType="granite/ui/components/foundation/form/hidden" 
    name="./[email protected]" 
    value="Boolean"/> 

Có một bản ghi chi tiết và bản trình diễn tại http://www.nateyolles.com/blog/2015/11/aem-checkboxes-using-sling-post-servlet.

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