2017-05-31 35 views
2

例如,我創建了一個複選框下面的屬性AEM/CQ:複選框被選中保存一個布爾值,如何保存一個布爾值設置爲false,如果我們未檢查?

<checkbox1 
        jcr:primaryType="cq:Widget" 
        checked="false" 
        defaultValue="false" 
        fieldLabel="Sample" 
        inputValue="true" 
        name="./sample" 
        checkboxBoolTypeHint="{Boolean}true" 
        type="checkbox" 
        xtype="selection"> 
        <listeners 
         jcr:primaryType="nt:unstructured" 
         check="function(isChecked){var panel = this.findParentByType('panel'); var fields = panel.find('name', './sample'); for (var i=0;i&lt;fields.length; i++) {if (fields[i].xtype == 'hidden') { if (isChecked.checked) {fields[i].setDisabled(true);} else {fields[i].setDisabled(false);}}}}"/> 

</checkbox1> 
<hiddenCheckbox1 
        jcr:primaryType="cq:Widget" 
        disabled="{Boolean}true" 
        ignoreData="{Boolean}true" 
        name="./sample" 
        value="{Boolean}false" 
        xtype="hidden"/> 

如果我們檢查/啓用該複選框它顯示屬性「樣本」像下面 樣品布爾真(工作正常) 如果我們未檢查/禁用複選框,然後它沒有顯示屬性「樣本」

後市展望:我想顯示樣品布爾值false,如果我們未檢查/禁用複選框

回答

5

你可能要檢查的吊帶POST的Servlet的文檔。當你提交對話時,這個servlet被調用。它叫做後綴您可以在對話框中使用給予POST的servlet什麼的領域正在做一些提示。例如

一個這樣的後綴是@UseDefaultWhenMissing後綴,應你正在尋找什麼。

從文檔:

如上所述,如果@DefaultValue提供了一種用於一個特定的參數沒有值纔會生效。然而,在某些情況下,如HTML複選框,這是不夠的,因爲該參數不提交的。爲了處理這種情況,你可以使用@UseDefaultWhenMissing後綴參數。

<form method="POST" action="/content/page/first" enctype="multipart/form-data"> 
    <input name="queryIgnoreNoise" class="input" type="checkbox" value="true"/> 
    <input type="hidden" name="[email protected]" value="false"/> 
    <input type="hidden" name="[email protected]" value="true"/> 
</form> 

所以,你必須在你的對話框定義做的是兩個額外的隱藏字段添加:

<checkbox1DefaultValue 
    jcr:primaryType="cq:Widget" 
    name="./[email protected]" 
    value="{Boolean}false" 
    xtype="hidden"/> 
<checkbox1UseDefaultWhenMissing 
    jcr:primaryType="cq:Widget" 
    name="./[email protected]" 
    value="{Boolean}true" 
    xtype="hidden"/> 

狠抓字段的名稱:

./[email protected]./[email protected]

這是該複選框(sample)加上兩個必需的後綴名的名字:@DefaultValue@UseDefaultWhenMissing

有幾個更漂亮的後綴就可以了吊帶文檔中讀到:

https://sling.apache.org/documentation/bundles/manipulating-content-the-slingpostservlet-servlets-post.html

+1

太謝謝你了。它是通過使用默認值和UseDefaultWhenMissing後綴創建兩個隱藏字段的工作! – user6041432

相關問題