내가 생각하는) 클래스에 sizeFor()
에 실제 getSizeFor()
방법의 이름을 변경해야합니다 BalusC가 준 응답은 가능한 가장 좋은 대답입니다. JSF 2.0이 1.x를 크게 향상시킨 이유 중 하나를 보여줍니다.
1.x를 사용하는 경우 EL 메소드를 사용하여 백킹 빈 메서드에서 선택할 수있는 이름으로 구성 요소의 ID를 요청 범위에 넣을 수 있습니다.
예.
<h:inputText id="foo" size="#{my:getWithID(configBean.size, 'foo')}" />
전계 발광 방식의 구현이이 같은 것을 볼 수 있었다 :이 경우
public static Object getWithID(String valueTarget, id) {
FacesContext context = FacesContext.getCurrentInstance();
ELContext elContext = context.getELContext();
context.getExternalContext().getRequestMap().put("callerID", id);
ValueExpression valueExpression = context.getApplication()
.getExpressionFactory()
.createValueExpression(elContext, "#{"+valueTarget+"}", Object.class);
return valueExpression.getValue(elContext);
}
을의 설정 빈의의 getSize() 메서드가 호출 될 때마다 호출 구성 요소의 ID를 사용할 것 요청 범위의 "callerID"를 통해 좀 더 깔끔하게하기 위해 호출이 끝난 후 범위에서 변수를 제거하기 위해 finally 블록을 추가해야합니다. (위의 코드는 시도하지 않았지만 잘하면 아이디어를 보여줍니다.)
다시 말하지만 JSF 1.x를 사용할 때 마지막 수단이 될 것입니다. 가장 깨끗한 솔루션은 JSF 2.0을 사용하고 BalusC가 설명하는 방법입니다.
와우! 정말 고맙습니다 ! – bertie