내 bean은 viewscoped입니다. getter와 setter가있는 간단한 문자열 속성이 있습니다. getter는 잘 동작하지만 (속성을 초기화하여 확인) setter는 작동하지 않습니다. setter 메서드에서 들어오는 각 매개 변수를 사용하여 Stringbuffer를 구축하고 있습니다.빈 특성이 갱신되지 않습니다.
코드 :
public String getParamval() {
return paramval;
}
public void setParamval(String paramval) {
logger.info("Incoming value:" + paramval);
pvals.append(paramval);
this.paramval = "VAL";
}
는 잘못인가? setter 내에서 입력 문자열이 전달되고 있는지 확인하기 위해 테스트했지만 메서드가 호출되거나 호출되지 않는 것 같습니다. 보기에서 # {} 표기법을 사용하고 있습니다.
보기 :
<c:forEach items="${gdsiGeodataBean.requiredfields}" var="reqs">
<h:outputLabel value="#{reqs}:* " />
<pou:inputText value="#{gdsiGeodataBean.paramval}" required="true" requiredMessage="Input is required."/>
</c:forEach>
그리고 왜 내가 setter 메소드에서 StringBuffer를 구축 싶은 것? 왜냐하면 입력 텍스트는 동적 목록을 기반으로 동적으로 만들어지기 때문입니다. 바인딩 할 bean 속성이 하나뿐입니다.
지도를 사용할 수는 있지만 위와 같은 이유 때문에 setter 메서드에서지도 값을 업데이트 할 수없는 것처럼 보입니다. 이것은 내가 여기에서 질문 한 것과 관련이 있습니다 Updating a map value in a managed bean
마법사 구성 요소가 대화 구성 요소 내에있는 내에 있습니다. 이 양식이나 대화 상자 구성 요소에는 다른 양식이 없습니다. 뷰에는 렌더링 된 특성이 false로 설정된 곳이 없습니다. 나는 이것을 확인하기 위해 viewtree를 점검 할 필요가 있다고 생각한다. –
algone
이상한 일이 일어나고 있습니다. 태그를 태그로 바꿨고 이제 setter가 작동합니다. 이게 왜 그렇게? –
algone
보기 렌더링 시간 표현식에 의존하고있는 것 같습니다. 긴 이야기 짧은 : http://stackoverflow.com/questions/3342984/jstl-in-jsf2-facelets-makes-sense – BalusC