[SPRING] 동적 템플릿 문자열을 만드는 방법
SPRING동적 템플릿 문자열을 만드는 방법
템플릿 문자열을 Spring 또는 java를 사용하는 값과 함께 대체하는 API가 있습니까?
예 :
Dear %FIRST_NAME% %LAST_NAME%,
---- remaining text-----------
여기서 매개 변수 (FIRST_NAME, LAST_NAME)는 Map 형식입니다.
해결법
-
==============================
1.제가 선호하는 템플릿 엔진은 Apache Velocity입니다.
제가 선호하는 템플릿 엔진은 Apache Velocity입니다.
Spring과 잘 통합되어 있으며, 소개 글은 여기에있다.
-
==============================
2.이렇게하는 코드를 작성하는 것은 비교적 간단합니다. 이것이 무언가라면 많은 일을해야 할 것입니다. 그러나 Velocity와 같은 기존 라이브러리를 사용하고 싶을 수도 있습니다. 그러나 값에 대해 다른 구문을 사용합니다. 시작하기를 참조하십시오.
이렇게하는 코드를 작성하는 것은 비교적 간단합니다. 이것이 무언가라면 많은 일을해야 할 것입니다. 그러나 Velocity와 같은 기존 라이브러리를 사용하고 싶을 수도 있습니다. 그러나 값에 대해 다른 구문을 사용합니다. 시작하기를 참조하십시오.
직접 쓰려면 다음을 시도하십시오.
public static String replaceAll(String text, Map<String, String> params) { return replaceAll(text, params, '%', '%'); } public static String replaceAll(String text, Map<String, String> params, char leading, char trailing) { String pattern = ""; if (leading != 0) { pattern += leading; } pattern += "(\\w+)"; if (trailing != 0) { pattern += trailing; } Pattern p = Pattern.compile(pattern); Matcher m = p.matcher(text); boolean result = m.find(); if (result) { StringBuffer sb = new StringBuffer(); do { String replacement = params.get(m.group(1)); if (replacement == null) { replacement = m.group(); } m.appendReplacement(sb, replacement); result = m.find(); } while (result); m.appendTail(sb); return sb.toString(); } return text; }
예 :
String in = "Hi %FIRST_NAME% %LAST_NAME%."; Map<String, String> params = new HashMap<String, String>(); params.put("FIRST_NAME", "John"); params.put("LAST_NAME", "Smith"); String out = replaceAll(in, params); System.out.println(out);
산출:
Hi John Smith.
-
==============================
3.여기에서 StringTemplate, http://www.stringtemplate.org/ 및 기사를 확인하려면 http://www.codecapers.com/post/Generating-Structured-Text-with-StringTemplate.aspx를 참조하십시오.
여기에서 StringTemplate, http://www.stringtemplate.org/ 및 기사를 확인하려면 http://www.codecapers.com/post/Generating-Structured-Text-with-StringTemplate.aspx를 참조하십시오.
-
==============================
4.용법:
용법:
replaceAll(string, "param1", "value 1", "param12", "value 12");
이행:
public static String replaceAll(String text, Object... replacements) { Assert.isTrue(replacements.length % 2 == 0, "Is not key - value pairs: " + replacements); Map< String, String> longToShortNamesMap = new TreeMap<>(new Comparator<String>() { @Override public int compare(String o1, String o2) { return o1.length() == o2.length() ? o1.compareTo(o2) : o2.length() - o1.length(); } }); for (int i = 0; i < replacements.length; i += 2) { longToShortNamesMap.put(Objects.toString(replacements[i]), Objects.toString(replacements[i+1])); } String result = text; for (String key : longToShortNamesMap.keySet()) { Assert.isTrue(text.contains(key), "Can not find key in the text " + key); result = result.replaceAll(key, longToShortNamesMap.get(key)); } return result; }
from https://stackoverflow.com/questions/2368802/how-to-create-dynamic-template-string by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 부트에서 application.yml이나 bootstrap.yml에 속성을 두는 것의 차이점은 무엇입니까? (0) | 2019.02.28 |
---|---|
[SPRING] Spring MVC DelegatingFilterProxy의 요점은 무엇입니까? (0) | 2019.02.28 |
[SPRING] 사용자 정의 객체가있는 Oracle 저장 프로 시저에서 Spring jdbc를 사용하여 List <String> 반환 (0) | 2019.02.28 |
[SPRING] Grails Spring Security LDAP 및 Spring Security Core Plugin 설치를 한 번만 설치하십시오. (0) | 2019.02.28 |
[SPRING] 404 연관 매핑 오류 (0) | 2019.02.28 |