Как я могу удалить теги html из текста и сохранить его в EL?

я получаю данные, используя тег atg dsp:valueof со свойством 'valueishtml', установленным в true. Мне нужно передать эти полученные данные, то есть без каких-либо тегов html, в переменную json через EL. Может ли кто-нибудь направить меня, как это можно сделать? . Ниже приведен пример того, что мне нужно сделать. Обратите внимание, что это не код.

var mydatawithouthtml = <dsp:valueof param="product.data" valueishtml="true"/>

<json:property name="data" value="${mydatawithouthtml}" />

в настоящее время «product.data» содержит теги html, которые передаются в json. нужны данные json без каких-либо тегов html.

ТИА


person user3465554    schedule 06.01.2016    source источник


Ответы (1)


Самый простой способ сделать это — разработать собственный tagconverter. Простой способ достижения заключается в следующем:

package com.acme.tagconverter;

import java.util.Properties;
import java.util.regex.Pattern;

import atg.droplet.TagAttributeDescriptor;
import atg.droplet.TagConversionException;
import atg.droplet.TagConverter;
import atg.droplet.TagConverterManager;
import atg.nucleus.GenericService;
import atg.nucleus.ServiceException;
import atg.servlet.DynamoHttpServletRequest;

public class StripHTMLConverter extends GenericService implements TagConverter {

    private Pattern tagPattern;

    @Override
    public void doStartService() throws ServiceException {
        TagConverterManager.registerTagConverter(this);
    }

    public String convertObjectToString(DynamoHttpServletRequest request, Object obj, Properties attributes) throws TagConversionException {
        return tagPattern.matcher(obj.toString()).replaceAll("");
    }

    public Object convertStringToObject(DynamoHttpServletRequest request, String str, Properties attributes) throws TagConversionException {
        return str;
    }

    public String getName() {
        return "striphtml";
    }

    public TagAttributeDescriptor[] getTagAttributeDescriptors() {
        return new TagAttributeDescriptor[0];
    }

    public void setTagPattern(String tagPattern) {
        this.tagPattern = Pattern.compile(tagPattern);
    }

    public String getTagPattern() {
        return tagPattern.pattern();
    }

}

Затем на него ссылаются через файл свойств компонента, содержащий шаблон:

$class=com.acme.tagconverter.StripHTMLConverter
tagPattern=<[^>]+>

Очевидно, это предполагает, что все между начальным '‹' и конечным '>' должно быть удалено. Вы можете самостоятельно поработать над RegEx, чтобы найти лучший шаблон.

Вы также должны зарегистрировать TagConverter в файле Initial.properties.

$class=atg.nucleus.InitialService
$scope=global

initialServices+=\
    /com/acme/tagconverter/StripHTMLConverter 

Теперь вы сможете использовать его по назначению.

var mydatawithouthtml = '<dsp:valueof param="product.data" converter="striphtml"/>'
person radimpe    schedule 07.01.2016