UIBinder xml中的变量

时间:2013-04-15 17:45:23

标签: gwt uibinder

我是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>

1 个答案:

答案 0 :(得分:3)

在MVC(无论这意味着什么)方式的代码中设计GUI有两种方法:

  • GUI非常智能,可以从模型中提取数据,通常是在某些事件发生时(数据绑定属于此类别),
  • GUI是愚蠢的,因此控制器将数据推送到视图中(有时称为passive view)。

两者都有他们的优点和缺点,但重要的是:当你试图将它们结合起来时,专业人士相互抵消,并且累积。那就是你最终会遇到每个模式的缺点和一大堆。

UIbinder是一个帮助您构建愚蠢视图的工具,如MVP模式中所使用的那样。它可以帮助您轻松创建一组对象,当您将数据推入其中时,这些对象将重绘部分视图。它们不应该是智能实体。所以无聊的方式似乎是要走的路。

不想使用标签,顺便说一句,有点奇怪:你需要一个对象来更新ui的部分(它是Java,使用对象就是我们所做的!)。碰巧这种类型的对象存在并被称为Label。如果同一个班级被称为AnAutomaticHtmlUpdaterThatRequiresNoLabelWhatsoever,你会更喜欢它吗?