В проекте Контакты, если пользователь ввел недопустимый токен для редактирования контакта, как с этим быть, например, вместо #contactId:12
ввел #contactId:abc
. Или в другом приложении, возможно, по соображениям безопасности (например, для авторизации) у пользователя нет необходимых прав на редактирование объекта, как сообщить пользователю. Я пытался перейти к такому месту, как InvalidUrlPlace
, но не могу. Я не могу перемещаться изнутри метода Activity.start()
, используя placeController.goTo()
обновление1:
@Override
public void start(AcceptsOneWidget containerWidget, EventBus eventBus)
{
GWT.log("inside start() method");
if (assertValidPlace())
{
containerWidget.setWidget(view);
initialize();
}
}
protected boolean assertValidPlace()
{
if (!place.isValid())
{
GWT.log("going to InvalidUrlPlace");
placeController.goTo(new InvalidUrlPlace());
return false;
}
return true;
}
обновление2:
<code>
public class InvalidUrlPlace extends Place
{
private Messages messages = GWT.create(Messages.class);
private InvalidToken invalidToken;
public InvalidUrlPlace()
{
}
public InvalidUrlPlace(InvalidToken invalidToken)
{
this.invalidToken = invalidToken;
}
public InvalidToken getInvalidToken()
{
return invalidToken;
}
public String getMessage()
{
if (invalidToken != null)
return invalidToken.getMessage();
return messages.pageNotFound();
}
@Prefix("invalidUrl")
public static class Tokenizer implements PlaceTokenizer<InvalidUrlPlace>
{
@Override
public InvalidUrlPlace getPlace(String token)
{
return new InvalidUrlPlace();
}
@Override
public String getToken(InvalidUrlPlace place)
{
return "";
}
}
}