목적 :는 기본적으로, 나는 "라이프 사이클"메소드 이름의 소수를 가지고 있고 그들 각각에 대해 코드를 생성하려면 다음과 같은 형식목록 항목을 특성으로 보간 하시겠습니까?
public void save(){
helper.save();
}
public void load(){
helper.load();
}
//Other such lifecycle methods
의 자바 코드를 생성하는 프리 마커를 사용합니다. 그러나 전달 된 모델 객체가 전달해야하는 경우에만 메소드를 생성합니다.
<#assign methodNames = ["load", "save"]>
<#list methodNames as method>
<#if model.method>
public void ${method}(){
helper.${method}();
}
</#if>
</#list>
그러나, <#if>
문이 작동하지 않습니다 :
public class Model{
private boolean load;
private boolean save;
//bools for other lifecycle methods
public Model(boolean load, boolean save){
this.load = load;
this.save = save;
}
public boolean getLoad(){
return load;
}
public boolean getSave(){
return save;
}
}
내 프리 마커 템플릿 :처럼 내 모델 클래스 보인다. Freemarker는 model.method
이 null
이라고 불평합니다. Freemarker가 model
을 save
또는 load
으로 해결하지 않고 내 모델에서 getMethod()
을 찾고 나서 getSave()
또는 getLoad()
을 찾고있는 것 같습니다. 내가 <#if>
안에 그 <@methodRequired>
을 수 없다는 오류가
<#assign methodNames = ["load", "save"]>
<#list methodNames as method>
<#assign methodRequired = r"model.${method}">
<#if <@methodRequired?interpret>>
public void ${method}(){
helper.${method}();
}
</#if>
</#list>
이 실패
나는 다음하지만 모든 경우에 프리 마커에 대한 하나의 구문 오류 또는 다른 불평했습니다. 나는 또한 직접<#if model.${method}>
시도했지만 분명히 작동하지 않습니다. -
가 어떻게 프리 마커가 다른 모델 객체 내부에서 나에게리스트 변수의 값을 제공하도록 요청 않는 //Obtain a writer object first. Then ...
Model model = new Model(true, false);
myTemplate.process(model, writer);
writer.close();
그래서, 질문은 :
완성도를 들어, 여기에 내가 템플릿을 호출하는 방법은?
그 트릭을했습니다. 필자가해야만하는 것은'if' 조건에서이 구문을 사용하는 것입니다 :'<# if model [method]>' – curioustechizen