RDBMS 기반으로 code 테이블에도 있지만
enum으로 된 상수들은 어떻게 front에서 사용할 수 있을까 고민할 차에 구글신이 내려주셨습니다..
출처의 출처입니다.
감사합니다.
출처 : https://www.podo-dev.com/blogs/121
출처 : http://dogfeet.github.io/articles/2008/1220695860.html
web.xml에 다음 리스너를 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<!-- ENUM Listener 설정 -->
<listener>
<listener-class>com.cglee079.coinchatbot.config.listener.EnumContextListener</listener-class>
</listener>
<context-param>
<param-name>enumServletContextConfig</param-name>
<param-value>
<!-- Enums-->
com.cglee079.coinchatbot.config.id.Coin,
com.cglee079.coinchatbot.config.id.Lang,
com.cglee079.coinchatbot.config.id.Market,
com.cglee079.coinchatbot.config.id.MenuState
</param-value>
</context-param>
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
package zes.openworks.common.listener;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class EnumContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
String param = servletContextEvent.getServletContext().getInitParameter("enumServletContextConfig");
String[] params = param.split(",");
for (String className : params) {
className = className.trim();
this.loadEnum(className, servletContextEvent.getServletContext());
}
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
/**
* Enum 인스턴스를 찾아서 Map<name, Enum<?>> 맵으로 변환하고 ServletContext에 넣습니다.
*
* @param className
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
private void loadEnum(String className, ServletContext context) {
Map<String, Enum<?>> ret = null;
try {
Class<Enum> clazz = (Class<Enum>) Class.forName(className);
Enum[] enums = clazz.getEnumConstants();
ret = new HashMap<String, Enum<?>>(enums.length);
for (Enum e : enums) {
ret.put(e.name(), e);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
ret = Collections.unmodifiableMap(ret);
context.setAttribute(this.getAlias(className), ret);
}
/**
* 클래스 alias를 만듭니다.
*
* @param className
* @return
*/
private String getAlias(String className) {
String[] token = className.split("\\.");
String alias = token[token.length - 1].trim();
return alias;
}
}
|
cs |
'Tip' 카테고리의 다른 글
[intellij] 에러 java.net.BindException: Address already in use: bind, Address localhost:1099 is already in use (0) | 2021.08.19 |
---|---|
[intellij] Maven Java 프로젝트 용 IntelliJ IDEA에서 Kotlin 컴파일러를 비활성화하는 방법은 무엇입니까? (0) | 2021.08.19 |
[cubrid] column안에 줄바꿈 처리 및 행의처음 삭제 (0) | 2021.08.19 |
[gitlab-ci] (주먹구구식) 수정된 파일만 maven build (docker) (0) | 2021.08.19 |
objectmapper로 vo에 없는 parameter 무시하고 list만들기 (0) | 2021.08.17 |