2012-05-07 13 views
16

Estoy tratando de tener una casilla de verificación seleccionada por defecto en un cuadro de diálogo de componente al editar. Estas son las propiedades en el campo:Obtener casilla de verificación marcada como predeterminada en 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) 

Respuesta

17

Sí, parece que the documentation es un poco torcidas. Hice un poco de experimentación, y esta combinación de propiedades que funciona para mí:

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

La propiedad defaultValue parece ser la clave.

Tienes cq: Widget para tu tipo principal, no widget, ¿no?

+2

Muchas gracias. No habría ideado esta combinación por mi cuenta. ¡Vamos, Adobe, gestiona mejor tu documentación! –

+0

He enfrentado exactamente el mismo problema y empeorado por la documentación imprecisa de CQ. Mirando más a fondo en esto, la combinación de arriba mostrará con éxito una casilla de verificación "marcada" en el Diálogo pero eso no dará como resultado la propiedad JCR subyacente que representa este elemento de casilla, es decir, no hay una propiedad ./foomode pre-creada para esta casilla de verificación, solo se creará después de que el usuario acceda al cuadro de diálogo y presione el botón "Aceptar" incluso cuando no realice ningún cambio. –

+0

Las propiedades del nodo no se crean hasta que una solicitud POST las crea. Además, recuerde que no se envía una casilla de verificación a menos que esté marcada. Esto no es una función de CQ, está en las especificaciones de HTML e implementado por el navegador. Si desea crear la propiedad de nodo independientemente de si la casilla de verificación está marcada o no, use el sufijo @UseDefaultWhenMissing de SlingPostServlet. Consulte los documentos de Apache Sling: https://sling.apache.org/documentation/bundles/manipulating-content-the-slingpostservlet-servlets-post.html#usedefaultwhenmissing. – nateyolles

5

tener esta guarda como un booleano ...

<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

Para establecer casilla con un valor por defecto de comprobar y guardar la propiedad como un tipo de propiedad booleana en el JCR (en lugar de una cadena) , utilice los siguientes ajustes de interfaz de usuario clásicos:

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

O utilice los siguientes ajustes en el Granito 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"/> 

Hay una descripción detallada y demostración en http://www.nateyolles.com/blog/2015/11/aem-checkboxes-using-sling-post-servlet.

Cuestiones relacionadas