2014-10-02 2 views
1

도움이 필요합니다. 아마도 나는 장님입니다. 다음은 코드의 일부입니다.getItemProperty가 null을 반환하지 않습니다 - Vaadin 버그?

System.out.println("itemPropertyIDS="+item.getItemPropertyIds().toString()); 
System.out.println("argname="+argName); 
Property<?> p = item.getItemProperty(argName); 
if (p != null) { 
    System.out.println("p="+p.toString()); 
    return p.getValue(); 
} 

// Continue ... 

propertyId가 없더라도 continue 대신 currious null 값을 반환합니다.
이는 내 콘솔에 기록됩니다

itemPropertyIDS=[iconName, iconResource, nodeType, nodeValue, nodeName, handler, nodeData] 
argname=Lab 
p[email protected]12967 

첫 번째 행은 속성 이름의 목록을 보여줍니다.
getTtemProperty는 null을 리턴해야하지만 예상하지 못합니다.


이 항목은 IndexedContainer에서 가져온 것입니다.


도와 주시겠습니까? 어떤 생각? 고맙습니다.

+0

p! = null 일 수도 있지만 p.getValue()는 여전히 null 일 수 있습니다. – dokaspar

+1

버그 인 것 같습니다. 이에 관한 보고서가 있습니다 : http://dev.vaadin.com/ticket/7103. – kris54321

+1

도미니크에게 : 버그는 p는 null이어야합니다. propertyId가 있는지 여부를 알아야합니다. 그렇다면 null 값이 반환됩니다. 존재하지 않으면 계속해야합니다. kris에게 : 버그 일 경우 4 년 동안 해결되지 않은 이유는 무엇입니까? 나는 이것이 결코 고쳐지지 않을 것이라고 생각한다. Microsoft 동작. – Hink

답변

4

IndexedContainer에 속성이 없는데도 코드를 테스트했지만 실제로 p 속성이 null이 아닙니다. kris54321이 붙여 넣은 Vaadin 티켓의 설명을 읽으면 일부 응용 프로그램이 해당 기능에 의존 할 수 있으므로 버그를 수정하지 않는 것이 좋습니다. 버그를 수정하면 해당 앱이 손상 될 수 있습니다. 이 문제에 대한

가능한 해결 방법 :

확인 직접 부동산 ID 수집 속성은 컨테이너에있는 경우 :

if(item.getItemPropertyIds().contains(argName) { 
    Property<?> p = item.getItemProperty(argName); 
    System.out.println("p="+p.toString()); 
    return p.getValue() 
} 

변경 논리는 속성 값을 확인

if(item.getItemProperty(argname).getValue() != null) } 
    //Do things 
{ 
0

"item.getItemPrope을 사용하여 해결 방법을 강요했습니다. rtyIds(). contains (argName) ". 나에게 우선 순위는 항목에 값 (null 가능)이 있는지 여부를 확인하는 것입니다. 그렇다면 그 값 (null 일 수 있음)을 사용하고 다른 활동은 완료됩니다.

버그를 사용하여 응용 프로그램으로 인해 버그를 수정하지 않으려면 문서를 수정해야합니다. 그렇지 않으면 Vaadin의 모든 초보자가 혼란스러워합니다.
IndexedContainer $ IndexedContainer에서의 구현이 잘못되었습니다 : 문서가 말한대로이 null을 반환 할 수 없다

@Override 
public Property getItemProperty(Object id) { 
     return new IndexedContainerProperty(itemId, id); 
} 

.

관련 문제