처음으로이 모든 새 스레드가 다음과 관련됩니다. Updating certain view programmatically from a JMS listener class 이제 서버 푸시 기능이 부족하여 간단한 계산으로 다른 문제가 있습니다. 같은 transient 모듈 뷰에있는 속성.OpenXava Transient View에서이 계산 된 속성이 작동하지 않는 이유
@View(members="Counter [counter], readItems")
public class TrackIt {
@OneToMany
@ReadOnly
@OnSelectElementAction("TrackIt.checkSelectedReadItems")
private Collection<ReadItem> readItems;
public int getCounter() {
return readItems!=null?readItems.size():0;
}
public Collection<ReadItem> getReadItems() {
return readItems;
}
public void setReadItems(Collection<ReadItem> readItems) {
this.readItems = readItems;
}
}
는 그래서, ReamItem 내가 JMS 리스너에 의해 수신 된 객체를 지속하고있어 기업이다 여기 내 과도 뷰의 한 버전 (I 여러 가지 방법을 시도)입니다. 그래서 뷰의 간단한 수동 새로 고침을 사용하면서 처음에 계산 된 카운터 속성의 결과와 각 수동 새로 고침 이후의 결과를보고 싶었지만이 속성의 값을 얻지는 못했습니다. 카운터 레이블 뒤에 빈 공간 (btw, 콜렉션이 잘 보임). 나는 영구적 인 관리자와 함께 DB에 들어가서 계산 된 속성에 직접적으로 ReadItem 엔티티의 카운터를 가져 왔지만 작동하지 않았다. 또한 기본값 계산기를 사용해 보았지만 아무런 효과가 없었다. 하지만 여기서 가장 재미있는 것은 getCounter()를 100과 같은 단순한 int 만 반환하도록 변경했지만 너무 효과가 없습니다.
그래서이 계산 된 속성에 대한 모든 팁을 일시적으로 볼 수 있습니다.
미리 감사드립니다.
나는보기를 채우기 위해 다른 것을하지 않고있다. 단지 @View를 가진 클래스이고 컨트롤러와 모듈을 CRUD없이 세부적인 뷰로 선언한다. – HayrolR
이제 콜렉션 만 올바르게 표시된다는 것을 알았지 만 콜렉션에 대한 뷰가 렌더링되는 순간에는 아무 것도 액세스 할 수 없습니다. 작은 엔티티를 사용하여 카운터를 지속 (JMS 리스너로)하고 임시보기에서 참조로 액세스하려고 시도했지만 사용 가능한 유일한 필드는 작은 엔티티의 ID로 두 개의 특성 (ID 컨트롤러에서 on-each-request = "true"인 액션을 사용하기로 결정했습니다. – HayrolR
public class UpdateReadItemsCountAction extends ViewBaseAction // getView()를 사용합니다. {\t \t public void execute() 예외를 throw합니다. { \t \t super.executeAfter(); \t \t ReadItemCount readItemCount = XPersistence.getManager(). find (ReadItemCount.class, "402881c33bc3cb08013bc3cc1e8d0000"); \t \t 경우 (의 getView() getModelName() equalsIgnoreCase ("TrackIt")..) { \t \t \t의 getView() getSubview ("readItemCount")로 setModel (readItemCount)..; \t \t \t getView(). getSubview ("readItemCount"). refresh(); \t \t} \t \t super.executeBefore(); \t} \t }' – HayrolR