我有一个名为Orders的页面和一个名为OrderDetails的页面.正如优秀的MVP教程中所述,我正在使用History(带有一个中央ValueChangeListener)和一个"事件总线"HandlerManager.
我有一个为某个人点击订单的事件注册的处理程序,它基本上创建了OrderDetailPresenter,传递了订单ID(包含在ShowOrderDetailEvent中),然后调用History.newItem("orderDetails")
.
这有几个主要缺点:这个新创建的历史记录步骤不知道传入了哪个订单ID.例如,如果有人为订单详细信息页面添加书签(或者在浏览器中返回然后向前),它们将变为空没有订单详情的页面.
所以我的问题是:我应该做一些类似的事情History.newItem("orderDetails?id="+id)
,然后在我的值变更监听器中解析历史记录吗?如果是这样,是否有最佳实践,API或库以这种方式将参数解析并格式化为字符串?
嗨,我正在使用GWT及其支持历史的"历史"课程.它非常方便,但如何从网址中删除锚点部分?例如:
我的基本网址:
http://www.mysuperwebsite.com/myapp
Run Code Online (Sandbox Code Playgroud)
使用应用程序时,我会移动到添加新历史记录项的位置.
在代码中:
History.newItem("funnygame");
Run Code Online (Sandbox Code Playgroud)
结果:
http://www.mysuperwebsite.com/myapp#funnygame
Run Code Online (Sandbox Code Playgroud)
我再换一次地方:
在代码中:
History.newItem("notsofunnygames");
Run Code Online (Sandbox Code Playgroud)
结果:
http://www.mysuperwebsite.com/myapp#notsofunnygames
Run Code Online (Sandbox Code Playgroud)
然后我想回到我的主页(http://www.mysuperwebsite.com/myapp).
应该在代码中放置什么?:
????
Run Code Online (Sandbox Code Playgroud)
回到:
http://www.mysuperwebsite.com/myapp
Run Code Online (Sandbox Code Playgroud)
有没有可以实现我的目标的标准方式?
如果我添加这样的东西:
History.newItem("");
Run Code Online (Sandbox Code Playgroud)
要么
History.newItem(null);
Run Code Online (Sandbox Code Playgroud)
网址将成为
http://www.mysuperwebsite.com/myapp#
Run Code Online (Sandbox Code Playgroud)
这不是我喜欢的,我需要它没有尖锐的性格.
我想让我的超链接像按钮一样工作(仅响应 Click 事件),但是,当您单击它们时,它们会自动更改历史记录令牌,这会弄乱我的应用程序中的历史记录机制。有没有办法抑制超链接的默认行为,以便它不会更改历史标记?我尝试将 targetHistoryToken 设置为 null 但它不起作用。
谢谢,
是否可以删除gwt中的历史记录项?我想要实现的是,在特殊情况下,按下浏览器后退按钮将显示后面的第二个历史项目.我知道我可以通过手动调用History.back();来实现它,但我不喜欢这样,因为用户将看到一个左右的转换,这是不好的.请事先提供帮助.
裤裤
假设我想创建一个包含两个简单"屏幕"的GWT应用程序:
所以这个伪代码可能看起来像:
public class MainMenuPresenter implements Presenter {
// mainMenuScreen may be a Composite that contains a Button for
// switching/navigating to the EditPreferencesView
private MainMenuView mainMenuScreen;
}
public class EditPreferencesPresenter implements Presenter {
// editPrefsScreen may be a Composite that contains a Button for
// switching/navigating back to the MainMenuView
private EditPreferencesView editPrefsScreen;
}
Run Code Online (Sandbox Code Playgroud)
问题:
Place
和它的关联如何Activities
适应这种范式?如果它是MVP和地方/活动之间的选择,那么这个例子将如何使用"活动/地方"范例?MainMenuView
在历史中设置为一个"位置",EditPreferencesView
作为第二个"位置",然后允许用户点击后退/前进浏览器按钮并在它们之间切换? …我想做历史记录重写.不知道它的可能性与否.例如,如果我的应用程序URL是http:// localhost:8080/myapp /#login,其中包含'login'作为历史记录标记.是否可以重写URL,如http:// localhost:8080/myapp/user/login.
或者是否可以从历史记录中删除"#"?
我有一个MVP应用程序实现.后退按钮工作正常.我想以编程方式返回上一个地方.我该怎么办?
我正在寻找类似的东西:
clientFactory.getPlaceController().goBack();
Run Code Online (Sandbox Code Playgroud)
谢谢.
gwt ×7
gwt-history ×7
java ×4
mvp ×2
events ×1
gwt-mvp ×1
history ×1
html ×1
hyperlink ×1
javascript ×1
token ×1
url-encoding ×1