我有一个名为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)
这不是我喜欢的,我需要它没有尖锐的性格.
为什么java.util.Iterator界面有方法remove()?
当然,有时候这种方法是必要的,所有人都习惯了它的存在.但实际上迭代器的主要和唯一目的只是提供访问容器元素.当有人想为这个界面创建自己的实现,并且不能或不想以任何理由提供删除元素的能力时,他就被迫抛出UnsupportedOperationException.扔掉那个异常通常表明一个没有深思熟虑的架构或设计中的一些缺陷.
我真的不明白这样决定的原因.我想这将更正确地分离特定的子接口以支持可选方法:
任何合理的版本为什么remove()是一部分Iterator?这个直接违反单一责任原则的例子不是SOLID吗?
我使用Apache POI XWPF来创建和处理MS Word文档.但我没有在文档中找到如何更改页面方向.
显然这种方式应该成功:
XWPFDocument doc = new XWPFDocument();
CTDocument1 document = doc.getDocument();
CTBody body = document.getBody();
if (!body.isSetSectPr()) {
body.addNewSectPr();
}
CTSectPr section = body.getSectPr();
if(!section.isSetPgSz()) {
section.addNewPgSz();
}
CTPageSz pageSize = section.getPgSz();
pageSize.setOrient(STPageOrientation.LANDSCAPE);
Run Code Online (Sandbox Code Playgroud)
但是这种方法不能正常工作.我可以将页面方向设置为横向,当我在代码中读取页面方向时,我会获得横向.行.但是,如果我打开保存的文件,我就是肖像格式.此设置实际上不起作用.可能是什么问题呢?
作为一种解决方法,我被迫开始使用横向或纵向格式手动创建的空白文档.但是我希望以所需的方向从头开始以编程方式创建文档.
例如,POI HSSF和XSSF具有在横向和纵向模式之间切换的功能.它是setLandscape()org.apache.poi.ss.usermodel.PrintSetup接口的方法.
但是,我们XWPF还是HWPF?
我想让我的超链接像按钮一样工作(仅响应 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作为第二个"位置",然后允许用户点击后退/前进浏览器按钮并在它们之间切换? …K.Sierra和B.Bates在他们的着作"SCJP学习指南"中写道
" 以下是合法的,byte b = 27;但仅仅是因为编译器自动将文字值缩小为一个字节.换句话说,编译器放入强制转换.前面的代码与以下代码相同:byte b = (byte) 27; "
在我看来,这种解释是不正确的.这两行代码是否相同?
事实上
byte b = 27;
Run Code Online (Sandbox Code Playgroud)
只是一个常数.并且编译时缩小常量是此代码有效的唯一原因.所以不需要演员阵容.缩小编译器时,只需检查指定的值是否适合变量的类型.该规范说:
如果变量的类型是byte,short或char,则可以使用缩小的基元转换,并且常量表达式的值可以在变量的类型中表示.
在第二种情况下
byte b = (byte) 27;
Run Code Online (Sandbox Code Playgroud)
在运行期间确实发生了转换,并且根据特定规则计算原始值.编译器不关心基元类型的兼容性.例如
byte b = 5.0; // compile error
byte b = 277777777; // compile error
byte b = (byte) 5.0; // valid!
byte b = (byte) 277777777; // valid!!
Run Code Online (Sandbox Code Playgroud)
这让我觉得扩大/缩小转换和铸造是根本不同的.但在各种来源中,它们经常互换使用.它是否正确?如果隐式缩小转换,是否会在封面下进行铸造?
任何人都能解释上述书中描述的情况下编译器的真实行为吗?
我有一个MVP应用程序实现.后退按钮工作正常.我想以编程方式返回上一个地方.我该怎么办?
我正在寻找类似的东西:
clientFactory.getPlaceController().goBack();
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在尝试设计一个Java swing应用程序.我想尝试并使用MVC类型的体系结构,我的UI与实际逻辑分离,以访问数据并连接到数据库.我已经决定创建一个自定义类,其中包含连接到数据库的所有逻辑,然后在我的action事件中为任何特定的表单和按钮调用此类中的方法.这样我可以切换数据库和我需要做的所有事情(如果我有一个包含许多表单的大型代码库)就是更改JDBC连接字符串以连接到oracle而不是MySQL.到目前为止,我有连接到数据库的代码,但我想弄清楚如何使这个类成为一个类.
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con=(Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/prototypeeop","root","triala");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(sql);
Run Code Online (Sandbox Code Playgroud)
然后,我将从连接类的成员函数返回结果集,以处理并显示在屏幕上.
java ×8
gwt ×6
gwt-history ×6
mvp ×2
apache-poi ×1
casting ×1
events ×1
gwt-mvp ×1
history ×1
html ×1
hyperlink ×1
iterator ×1
javascript ×1
jdbc ×1
oop ×1
primitive ×1
scjp ×1
url-encoding ×1
xwpf ×1