【问题标题】:Sample GWT2.5 application [closed]示例 GWT2.5 应用程序 [关闭]
【发布时间】:2012-07-10 06:13:44
【问题描述】:

请给我示例 GWT2.5 应用程序,其中包含 2.5 中的所有附加功能。请给我已经尝试过 UiBinder 增强功能。但它不起作用。

请尽快回复我。很紧急

以下是代码,

主入口点

package com.MyApp.client;

import com.google.gwt.core.client.EntryPoint;
 import com.google.gwt.user.client.ui.RootPanel;


public class MainEntryPoint implements EntryPoint {


/** 
 * Creates a new instance of MainEntryPoint
 */
public MainEntryPoint() {
}

/** 
 * The entry point method, called automatically by loading a module
 * that declares an implementing class as an entry-point
 */
@Override
public void onModuleLoad() {
    final MainViewClass mainView = new MainViewClass();
    RootPanel.get().add(mainView);
}

}


MyActionCell

package com.Rajaa.client;

import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.cell.client.Cell.Context;
import com.google.gwt.cell.client.ValueUpdater;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.uibinder.client.UiRenderer;
import com.google.gwt.user.client.Window;


public class MyActionCell extends AbstractCell<String> {

interface MyUiRenderer extends UiRenderer {

    void render(SafeHtmlBuilder sb, String name);

    void onBrowserEvent(EmployeeMain o, NativeEvent e, Element p, String n);
}
private static MyUiRenderer renderer = GWT.create(MyUiRenderer.class);

@Override
public void render(Context context, String value, SafeHtmlBuilder builder) {
    renderer.render(builder, value);
}

@Override
public void onBrowserEvent(Context context, Element parent, String value,
        NativeEvent event, ValueUpdater<String> updater) {
    renderer.onBrowserEvent(this, event, parent, value);
}

public MyActionCell() {
    super("click");
}

@UiHandler("nameSpan")
void onNameGotPressed(ClickEvent event, Element parent, String name) {
    Window.alert(name + " was pressed!");
}

}


我的主视图

package com.MyApp.client;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.Window;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.Widget;
 import java.util.Arrays;
 import java.util.List;

public class MyMainView extends Composite {

@UiField
CellTable<Student> table;

private static EmployeeUiBinder uiBinder = GWT.create(EmployeeUiBinder.class);

interface EmployeeUiBinder extends UiBinder<Widget, MyMainView> {
}

public Employee() {
    super.initWidget(uiBinder.createAndBindUi(this));
    TextColumn<Student> nameColumn = new TextColumn<Student>() {

        @Override
        public String getValue(Student object) {
            return object.name;
        }
    };
    table.addColumn(nameColumn, "Name");

    final TextColumn<Student> ageColumn = new TextColumn<Student>() {

        @Override
        public String getValue(Student object) {
            return object.age;
        }
    };
    table.addColumn(ageColumn, "Age");

    final TextColumn<Student> addressColumn = new TextColumn<Student>() {

        @Override
        public String getValue(Student object) {
            return object.address;
        }
    };
    table.addColumn(addressColumn, "Address");

    Column<Student, String> editColumn = new Column<Student, String>(new MyActionCell()) {

        @Override
        public String getValue(Student object) {
            return "Edit";
        }
    };
    table.addColumn(editColumn, "Edit");

    table.setRowCount(DETAILS.size(), true);

    table.setRowData(0, DETAILS);
}

private static class Student {

    private final String name;

    private final String age;

    private final String address;

    public Student(String name, String age, String address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }
}
private static final List<Student> DETAILS = Arrays.asList(
        new Student("xxx", "50", "vvvvvvvvv"),
        new Student("xxxxxx", "37", "dfdfdfdf"),
        new Student("xxxx", "52", "fvxfxcfxdf"));

@UiHandler("nameSpan")
void onNameGotPressed(ClickEvent event) {
    Window.alert("Yes!");
}

}


MyMainView.ui.xml

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
    xmlns:h="urn:import:com.google.gwt.user.cellview.client">
        <ui:with field='name' type='java.lang.String'/>

<ui:style>

</ui:style>
<g:HTMLPanel>
    <h:CellTable ui:field="table"/>

'

 <g:Button ui:field='nameSpan'><ui:text from='{name}'/></g:Button>.

</ui:UiBinder>

提前致谢, 格尼克

【问题讨论】:

  • 您的问题并不比其他人更紧迫。
  • 不,Eelke,我必须使用 GWT2.5 创建一个应用程序并在今天之前展示演示。如果可以,请帮助我。

标签: gwt gwt2 uibinder


【解决方案1】:

Google Web Toolkit 文档已更新为最新(目前为 2.5)版本。正如你所说,UiBinder 有了新的改进。

根据谷歌博文What's new in GWT 2.5

GWT 2.5 为 UiBinder 添加了扩展,允许它支持单元渲染和事件处理。特别是,这种设计使 UiBinder 能够生成一个 UiRenderer 实现来帮助渲染 SafeHtml,并将事件分派到 @UiHandler 标签指定的方法。有关详细信息,请参阅为单元格呈现 HTML。

我们还引入了 IsRenderable/RenderablePanel 类型。当由应用程序而不是 HTMLPanel 使用时,它们可以显着缩短渲染时间并减少复杂 UiBinder UI 的延迟。

该文档显示了 2.5 中有关该功能的多个示例。您可以在此处查看示例:Rendering HTML for Cells

【讨论】:

  • 是的 Sandro,我已经根据这个文档创建了一个示例应用程序。但我无法运行它。因为我收到错误。所以请给我一个示例应用程序。如果可以的话,请
  • 有什么错误?如果您需要帮助,请分享您的代码。
  • [错误] 无法找到资源:com/MyApp/client/MyActionCell.ui.xml [错误] 'com/MyApp/client/MyActionCell.java' 中的错误 [错误] 第 27 行:失败通过延迟绑定解析 'com.MyApp.client.MyActionCell.MyUiRenderer' [WARN] 对于以下类型,生成的源从未提交(您是否忘记调用 commit()?) [WARN] com.MyApp. client.MyActionCell_MyUiRendererImpl /home/My_Project/Simple/nbproject/build-gwt.xml:262:执行此行时发生以下错误:/home/My_Project/Simple/nbproject/build-gwt.xml:411:Java 返回:1
  • 桑德罗,请看我的问题。我已经用我的代码编辑了这篇文章。谢谢
猜你喜欢
  • 2012-10-13
  • 2010-11-01
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多