在AEM pathBrowser中限制文件类型的方法

在AEM pathBrowser中限制文件类型的方法,aem,Aem,我需要在使用touchUI字段时限制文件类型 granite/ui/components/foundation/form/pathbrowser pathfield有一个功能 正则表达式:/(png | jpg | jpeg)$/, regexText:“请选择正确的文件” 它不适用于pathBrowser,TouchUI字段 有什么建议吗?以下是一个可能适合您的示例: 以下是一个可能适合您的示例: 我在OSGI bundle包上创建了一个谓词类,它限制了文件类型。java类 package c

我需要在使用touchUI字段时限制文件类型

granite/ui/components/foundation/form/pathbrowser

pathfield有一个功能

正则表达式:/(png | jpg | jpeg)$/, regexText:“请选择正确的文件”

它不适用于pathBrowser,TouchUI字段


有什么建议吗?

以下是一个可能适合您的示例:


以下是一个可能适合您的示例:


我在OSGI bundle包上创建了一个谓词类,它限制了文件类型。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;
    }

}

我在OSGI bundle包上创建了一个谓词类,它限制了文件类型。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;
    }

}

您可以在TouchUI组件中执行客户端限制,以限制用户发布其他类型的文件。我不建议为您的用例创建类似的东西。客户端的限制是“regex”,这也仅适用于经典UI。对于TouchUI,我没有找到任何这样的解决方案。如果有的话,请建议我@RajeshPantula您可以在TouchUI组件中执行客户端限制,以限制用户发布其他类型的文件。我不建议为您的用例创建类似的东西。客户端的限制是“regex”,这也仅适用于经典UI。对于TouchUI,我没有找到任何这样的解决方案。如果有的话,请建议我@拉杰什潘图拉