2016-10-25 65 views
0

我要求使用頭錘場,方式來限制AEM pathBrowser

花崗岩/ UI /組件/基礎/表格/ pathbrowser時限制文件類型的文件類型。

沒有爲pathfield功能,

正則表達式:/(PNG | JPG | JPEG)$ /, regexText: 「請選擇正確的文件」

這是不是pathBrowser工作, TouchUI字段。

有什麼建議嗎?

回答

0

我已經創建的OSGi包封裝在那裏它限制的文件類型的謂詞類。 java類,

package com.mec.core.utils; 

import com.day.cq.commons.predicate.AbstractResourcePredicate; 
import org.apache.commons.collections.Predicate; 
import org.apache.felix.scr.annotations.Component; 
import org.apache.felix.scr.annotations.Properties; 
import org.apache.felix.scr.annotations.Property; 
import org.apache.felix.scr.annotations.Service; 
import org.apache.sling.api.resource.Resource; 
import org.apache.sling.api.resource.ValueMap; 


@Component(label = "Dam Image Predicate", 
description = "This predicate is used to display only JPG and PNG files in the pathfield") 
@Service(value = Predicate.class) 
@Properties({@Property(label = "Predicate Name", name = "predicate.name", value = "damimagepredicate", 
propertyPrivate = true)}) 
public class DamImagePredicate extends AbstractResourcePredicate { 
    private static final String REP_ACL = "rep:ACL"; 
    private static final String JCR_CONTENT = "jcr:content"; 
    private static final String JCR_PRIMARYTYPE = "jcr:primaryType"; 
    private static final String DAM_ASSET = "dam:Asset"; 
    private static final String PNG = ".png"; 
    private static final String JPG = ".jpg"; 
    private static final String JPEG = ".jpeg"; 
    @Override 
    public boolean evaluate(Resource resource) { 
     if(null!= resource){ 
        ValueMap valueMap = resource.getValueMap(); 
        String primaryType = valueMap.get(JCR_PRIMARYTYPE,String.class); 
        if(null!=primaryType && !primaryType.isEmpty()){ 
         if(primaryType.equalsIgnoreCase(REP_ACL)){ 
          return false; 
         } 
         if(resource.getName().equalsIgnoreCase(JCR_CONTENT)){ 
          return false; 
         } 
         if(primaryType.equalsIgnoreCase(DAM_ASSET)){ 
          String resourceName = resource.getName(); 
          if(null!=resourceName && !resourceName.isEmpty()){ 
           if(resourceName.lastIndexOf(".")>-1){ 
            String extension = resourceName.substring(resourceName.lastIndexOf("."), resourceName.length()); 
            if(null!=extension && !extension.isEmpty()){ 
             if(extension.equalsIgnoreCase(PNG) || extension.equalsIgnoreCase(JPG) || extension.equalsIgnoreCase(JPEG)){ 
              return true; 
             }else{ 
              return false; 
             } 
            } 
           } 
          } 
         } 
        } 
       } 
     return true; 
    } 

} 
+0

您可以在觸摸UI組件中對客戶端進行限制,以限制用戶發佈其他類型的文件。我不會建議爲你的用例創建這樣的東西。 –

+0

客戶端限制與「正則表達式」,也只有經典的用戶界面。我沒有找到任何這樣的TouchUI解決方案。如果有的話,請給我建議。 @RajeshPantula –