나는 Thymeleaf를 사용하여 YAML 파일을 처리하려고합니다.Thymeleaf를 사용하여 YAML 파일을 처리하는 방법은 무엇입니까?
apiVersion: v1
kind: Service
metadata:
name: [[${app['name']}]]
labels:
app: [[${app['name']}]]
spec:
type: NodePort
ports:
- port: 80
protocol: TCP
name: http
- port: 443
protocol: TCP
name: https
selector:
app: nginx
app.name
내가 런타임에 구문 분석 다른 YAML 파일에서 제공되는 값 : 샘플 파일은 아래에 주어진다. 내가 지금까지 시도했습니다 무엇
:
가 작성
MessageSource
상황map.put("app.name", "test"); context.setVariables(map); // contains app.name
하지만에 변수를 설정
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
StandardMessageResolver messageResolver = new StandardMessageResolver();
messageResolver.setDefaultMessages(props); // contains app.name
templateEngine.setMessageResolver(messageResolver);
Properties
와계속 오류가 발생합니다.
Exception evaluating OGNL expression: "app['name']
...
Caused by: ognl.OgnlException: source is null for getProperty(null, "name")
Thymeleaf 3.0.3.RELEASE를 사용하십시오. Spring을 사용하고 있는데 Spring을 사용하지 않고 있습니다. 즉, spring-boot-starter-thymeleaf
은 HTML에 필요한 많은 수하물을 필요로합니다. 템플릿 확인자와 엔진을 직접 인스턴스화하기로 결정했습니다. Thymeleaf를 사용하여 사람들이 텍스트를 처리하는 경우는 거의없는 것처럼 보입니다. 내가 만난 모든 예제는 HTML입니다.
템플릿에 YAML 조각을 포함시키는 방법을 알고 싶습니다.
: 덕분에 @Metroids 덕분에 제대로 작동했습니다. 다른 사람이 비슷한 문제가있는 경우에 대비하여 내 샘플 앱에 link이 있습니다.
결국 내가 한 일입니다. 나는'MessageResolver'가 메시지 키의 일반적인 형식 인'app.name'을 해결할 수 있다는 인상하에 있었지만 그렇지 못했습니다. 조각 포함으로 응답을 업데이트하십시오. 동의하겠습니다. –
아, 당신은 thymeleaf 포럼에서 같은 사람입니다 ... 하하. – Metroids
'[# th : text = "# {app.name}"/]'이 메시지에서도 작동한다는 것을 알았습니다.그래도 구문은 더 간결합니다. 도와 주셔서 감사합니다. 앞으로 올 혜택을 받기 위해 필자는 작업중인 샘플 앱에 대한 링크를 포함하도록 내 질문을 편집했습니다. –