在“联系人”项目中,如果用户输入了无效令牌以进行联系人编辑,则应该如何处理,例如,而不是#contactId:12
,而是输入#contactId:abc
。或者在另一个应用程序中,可能出于安全原因(例如授权),用户没有编辑对象所需的权限,如何通知用户。我试图导航到InvalidUrlPlace
这样的地方但不能。
我无法使用Activity.start()
placeController.goTo()
方法内部导航
UPDATE1:
@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;
}
UPDATE2:
<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 "";
}
}
}
答案 0 :(得分:0)
试试这个:
@Override
public void start(AcceptsOneWidget containerWidget, EventBus eventBus)
{
if (place.isValid())
{
containerWidget.setWidget(view);
initialize();
}
else
{
placeController.goTo(new InvalidUrlPlace());
}
}
在您已经告诉活动离开新地点之后,您正尝试执行代码(return false
) - 即完成此活动并开始新活动。