我是GWT的新手并且无法找到答案:我有一个很好的UIBinder用于TextBox,它有效,我有UIHandler使用它,好的。但是,如果我想在整个HTML中显示来自此TextBox的值,该怎么办?有没有办法声明一个变量在整个HTML中重用这个值,或者每当我想在一个html页面上显示值时,我应该用新的ui:field name声明新的Label,并用UIHandler填充每个这样的Label(我能马上做,但这看起来真无聊)?
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:HTMLPanel>
<g:TextBox ui:field="myField"/><br/>
<div>
<p>
What do I need to put here if i want to see **myField.getValue()** in html, may be even multiple times?
And **here**?
I want to avoid creation of new and new objects in back-end class for just one value, multiple labels here are ok. How to push one value in all of them, when myField content is changed?
</p>
</div>
</g:HTMLPanel>
答案 0 :(得分:3)
在MVC(无论这意味着什么)方式的代码中设计GUI有两种方法:
两者都有他们的优点和缺点,但重要的是:当你试图将它们结合起来时,专业人士相互抵消,并且累积。那就是你最终会遇到每个模式的缺点和一大堆。
UIbinder是一个帮助您构建愚蠢视图的工具,如MVP模式中所使用的那样。它可以帮助您轻松创建一组对象,当您将数据推入其中时,这些对象将重绘部分视图。它们不应该是智能实体。所以无聊的方式似乎是要走的路。
不想使用标签,顺便说一句,有点奇怪:你需要一个对象来更新ui的部分(它是Java,使用对象就是我们所做的!)。碰巧这种类型的对象存在并被称为Label
。如果同一个班级被称为AnAutomaticHtmlUpdaterThatRequiresNoLabelWhatsoever
,你会更喜欢它吗?