2012-07-10 3 views
0

메시지를 수신하는 응용 프로그램이 있습니다. 메시지에는 편집 가능한 필드가 있습니다. 필드가 변경되면 데이터베이스에 저장해야합니다. 불행히도 setter는 setter의 범위 내에서만 주어진 필드의 값을 변경합니다. 왜 그런 일이 일어나는 지 아십니까? 당신은 creating a new object of Tag in setter method입니다세터는 세터의 범위 내에서만 필드의 값을 변경합니다.

public String getSenderCharges() { 
    Tag tag = swiftMessage.getBlock4().getTagByName("71F"); 
    String value = tag.getValue(); 
    Field71F field = new Field71F(value);   
    String senderCharges = field.getValue(); 
    return senderCharges; 
} 

public void setSenderCharges(String senderCharges) { 
    Tag tag = swiftMessage.getBlock4().getTagByName("71F"); 
    String value = tag.getValue(); 
    if(value.equals(senderCharges)){ 
     tag.setValue(value); 
    }else{ 
     tag.setValue(senderCharges); 
    } 
} 
+3

'아내'태그 란 무엇입니까? –

+0

XML 형식의 빠른 메시지를 구문 분석하는 데 사용되는 프레임 워크 –

+2

@JigarJoshi http://www.prowidesoftware.com/en/wife-documentation.html –

답변

1

그래서 당신은 tag.setValu 전자 setter 메소드 밖에 반영하지 않는 것입니다 같은 방법으로 태그 값을 업데이트 할 때 :이 getter 및 setter 코드입니다.

태그는 setter 메서드에 로컬이며 setter 메서드 외부에 범위가 없습니다.

이 방법을 시도 - 내가 알

public void setSenderCharges(String senderCharges) { 
    String value = swiftMessage.getBlock4().getTagByName("71F").getValue(); 
    if(!value.equals(senderCharges)){ 
     swiftMessage.getBlock4().getTagByName("71F").setValue(senderCharges); 
    } 
} 
+0

거기에 '새 태그'가 없습니다. . 그가 그것을 창조하고 있음을 어떻게 알 수 있습니까? –

+0

swiftMessage.getBlock4(). getTagByName ("71F")는 태그 객체를 반환합니다. 태그 태그 = swiftMessage.getBlock4(). getTagByName ("71F"); 컴파일 시간 오류가 발생했습니다. –

+0

태그가 작성되었습니다.이 경우는 –

0

것은 중복 tag.setValue(value)이다. 방금 얻은 가치를 왜 설정합니까? 귀하의 전체 설정 방법은 swiftMessage.getBlock4().getTagByName("71F").setValue(senderCharges)과 같습니다.

다른 코드에서이 변경 사항을 관찰하지 않는 이유는 지금까지 게시 한 코드에서 분명하지 않습니다. 어쩌면 동시성 문제일까요?

+0

나는 이것을 시도해 보았고 setter 내부의 값을 변경하기 전에 한 번은 범위 값을 벗어났다. –

+0

그 코드 줄을 보아도 문제가 해결되지 않는다. 나머지는 단지 참고 사항입니다. –

+0

네, 맞습니다. 시간과 메모에 감사드립니다. –

관련 문제