2011-11-23 7 views
3

라디오 버튼 목록을 가지고 있으며, backing bean 메소드의 결과에 따라 일부 항목을 비활성화하려고합니다.목록의 각 항목에 대해 backing bean 메소드에서 itemDisabled를 설정합니다.

올바른 방법인가요? 의미,이 코드는 selectItems 목록에서 각 x에 대해 checkIncompatible(x)을 호출하고 해당 항목을 사용/사용 안함 또는 단 한 번으로 설정하면됩니까?

모든 버튼을 사용하거나 사용하지 않도록 설정했을 뿐이므로이 메서드는 한 번만 호출되는 것입니다. 또는 나머지 코드는 내가 좋아하는만큼 완벽하지 못합니다. 그리고 그 문제를 해결하는 데 훨씬 더 긴 시간이 걸릴 것입니다.

답변

1

나는 다음과 같은 전망 인 Mojarra 2.1.4에 문제를 재현 할 수 없습니다

<h:selectOneRadio value="#{bean.item}"> 
    <f:selectItems value="#{bean.items}" var="item" 
     itemDisabled="#{bean.isDisabled(item)}" /> 
</h:selectOneRadio> 

다음과 같은 콩 :

private String[] items = { "one", "two", "three" }; // +getter 
private String item; // +getter+setter 

public boolean isDisabled(String item) { 
    return "two".equals(item); 
} 

위의 예제가 제대로 항목 two을 사용하지 않습니다.

따라서 문제는 checkUncompatible() 방법의 버그로 인해 발생합니다. 이 메서드에 대한 중단 점은 각 항목에 대해 확실히 호출된다는 것을 가르쳐줍니다.

+0

노력에 감사드립니다 – glasspill

+0

문제가 해결 되었습니까? 원인은 무엇입니까? – BalusC

+0

방법의 버그. 나는 게시하기 전에 확인했다. 두 번 : | – glasspill