rjy7 - Cornell University에 따르면 솔루션은 setter ("set"으로 시작하거나 void를 반환하는 메서드)를 사용하지 못하도록하여 ReadOnlyBeansWrapper를 설정하여 수행 할 수 있습니다.
@Override
protected void finetuneMethodAppearance(Class cls, Method method, MethodAppearanceDecision decision) {
// How to define a setter? This is a weak approximation: a method whose name
// starts with "set" or returns void.
if (method.getName().startsWith("set")) {
decision.setExposeMethodAs(null);
} else if (method.getReturnType().getName().equals("void")) {
decision.setExposeMethodAs(null);
} else {
Class<?> declaringClass = method.getDeclaringClass();
if (declaringClass.equals(java.lang.Object.class)) {
decision.setExposeMethodAs(null);
} else {
Package pkg = declaringClass.getPackage();
if (pkg.getName().equals("java.util")) {
decision.setExposeMethodAs(null);
}
}
}
나는 그것을 사용하고 나에게 잘 작동한다.
[Freemarker - bean 용 getter 만 사용 가능합니다.] (https://stackoverflow.com/questions/39747696/freemarker-only-use-getter-for-beans) – vinS
@vinS 귀하의 의견에 감사드립니다. 나는이 문제가 내 문제를 해결할 것이라고 생각하지 않는다. HIER는 방법 setMethodShadowsProperty의 discription입니다 : '당신이 이있는 경우 * 속성과 myObject.foo * 템플릿에 다음, "foo는"이라는 방법 모두의 방법 대신 자체 *를 반환합니다 있도록 속성 값은 종종 바람직하지 않습니다. ' –
질문에 대한 답변을 찾으면 (잘 했어!) 자신의 답변을 만드는 것이 더 적절합니다. 다른 답변도 읽고 쉽게 볼 수 있습니다. – Yunnosch