2014-07-16 6 views
0

두 명의 발표자 인 DevicePresenter와 ContainerPresenter가 있습니다. 내가이 재정의 된 메서드가 내 ContainersPresenter에서올바른 방법으로 PlaceRequest를 사용하려고 시도했습니다.

PlaceRequest request = new PlaceRequest.Builder() 
         .nameToken("containersPage") 
         .with("action","editContainer") 
         .with("containerEditId", selectedContainerDto.getUuid().toString()) 
         .build(); 
placeManager.revealPlace(request); 

: 나는이 같은 일부 매개 변수 ContainerPresenter 호출 할 DevicePresenter에 PlaceRequest을 배치

@Override 
public void prepareFromRequest(PlaceRequest placeRequest) { 
    Log.debug("prepareFromRequest in ContainersPresenter"); 
    super.prepareFromRequest(placeRequest); 

    String actionString = placeRequest.getParameter("action", ""); 
    String id; 
    //TODO: Should we change that to really retrieve the object from the server? Or should we introduce a model that keeps all values and inject that into all presenters? 
    if (actionString.equals("editContainer")) { 
     try { 
      id = placeRequest.getParameter("id", null); 
      for(ContainerDto cont : containerList) { 
       Log.debug("Compare " + id + " with " + cont.getUuid()); 
       if(id.equals(cont.getUuid())) { 
        containerDialog.setCurrentContainerDTO(new ContainerDto()); 
        addToPopupSlot(containerDialog); 
        break; 
       } 
      } 
     } catch (NumberFormatException e) { 
      Log.debug("id cannot be retrieved from URL"); 
     } 
    } 
} 

을하지만 revealPlace가 호출 될 때의 URL 브라우저는 그대로 유지되며 대신 기본 발표자 (홈)가 표시됩니다.

PlaceRequest(nameToken=containersPage, params={action=editContainer, containerEditId=8fa5f730-fe0f-11e3-a3ac-0800200c9a66}) 

을 그리고 내 NameTokens는 다음과 같습니다 : 내가 요청을 인쇄 할 때 , 잘 될 것 같다

public class NameTokens { 
    public static final String homePage = "!homePage"; 
    public static final String containersPage = "!containersPage"; 
    public static final String devicesPage = "!devicesPage"; 

    public static String getHomePage() { 
     return homePage; 
    } 

    public static String getDevicesPage() { 
     return devicesPage; 
    } 

    public static String getContainersPage() { 
     return containersPage; 
    } 

} 

내가 무엇을 그리워 했습니까? 감사!

답변

0

원래 코드에서 PlaceRequest를 구성 할 때 '!' 당신의 nametoken의 시작 부분에.

.nameToken("containersPage") 

당신은 NameTokens의 일정이 만드는 같은 쉬운 실수 가능성이 줄어 듭니다 참조,

public static final String containersPage = "!containersPage"; 

언급 당신의 NameTokens 항목이 동안으로!

0

가끔 문제는 "귀 사이에"존재합니다. 문자열을 피하고 NameTokens의 적절한 기호를

  PlaceRequest request = new PlaceRequest.Builder() 
        .nameToken(NameTokens.containersPage) 
        .with("action","editContainer") 
        .with("containerEditId", selectedContainerDto.getUuid().toString()) 
        .build(); 

과 같이 사용하면됩니다. 죄송합니다!