我有一个包含TextArea的简单UiBinder小部件:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:TextArea visibleLines="3" />
</ui:UiBinder>
Run Code Online (Sandbox Code Playgroud)
我想控制此textarea的背景颜色,以便进行可写和只读状态.GWT使用"-readonly"样式名称装饰器来实现此目的.所以我试试这个:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:style>
.textBoxStyle {
background-color:yellow;
}
.textBoxStyle-readonly {
background-color:lightgray;
}
</ui:style>
<g:TextArea styleName="{style.textBoxStyle}" visibleLines="3" />
</ui:UiBinder>
Run Code Online (Sandbox Code Playgroud)
显然这不起作用,因为样式名称被混淆为CssResources导致类似这样的事情:
.G1x26wpeN {
background-color:yellow
}
.G1x26wpeO {
background-color: lightgray;
}
Run Code Online (Sandbox Code Playgroud)
可写textarea的结果HTML如下所示:
<textarea tabindex="0" class="G1x26wpeN" rows="3"/>
Run Code Online (Sandbox Code Playgroud)
只读textarea看起来像这样:
<textarea tabindex="0" class="G1x26wpeN G1x26wpeN-readonly" readonly="" rows="3"/>
Run Code Online (Sandbox Code Playgroud)
如何声明样式,以便GWT对主要部分进行模糊处理而不对"-readonly"decdorator进行模糊处理?
我知道我可以禁用整个样式名称的混淆.但我想在使用装饰器的同时保持混淆.
我开始研究将GWT与UiBuilder结合使用.我有点疑惑你如何使用该@UiHandler(..)指令来制作简单的事件处理代码,如GWT文档中所述:
@UiHandler("button")
void handleClick(ClickEvent e) {
Window.alert("Hello, AJAX");
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,handleClick使用该方法.您如何知道每个GWT小部件可以创建哪些方法@UiHandler?对于某些人,您还可以创建一个doClose()方法.
但是,你可以使用什么ListBox来获得一个项目被选中的事件?我可以在文档中的哪个位置看到这个?
我试图用属性文件国际化UIBinder应用程序.由于我们已经通过com.google.gwt.i18n.client.Messages接口(GWT 1.7.1)公开了很多翻译,因此我们希望重用这些消息.
我尝试过以下方法:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:res="ui:with:be.credoc.iov.webapp.client.MessageConstants">
<g:HTMLPanel>
<div>
<res:msg key="email">Emaileke</res:msg>:
<g:TextBox ui:field="email" />
</div>
</g:HTMLPanel>
</ui:UiBinder>
Run Code Online (Sandbox Code Playgroud)
MessageConstants类如下所示:
@DefaultLocale("nl")
public interface MessageConstants extends Messages {
String email();
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.我怎样才能做到这一点?
我正在尝试与GWT 2.1.0的新GWT Editor框架集成.我还想将验证检查添加到框架中.但是,我正在努力寻找一个体面的例子来做这件事.
目前我有以下代码:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:e="urn:import:com.google.gwt.editor.ui.client">
<ui:with type="be.credoc.iov.webapp.client.MessageConstants"
field="msg" />
<g:HTMLPanel>
<e:ValueBoxEditorDecorator ui:field="personalReference">
<e:valuebox>
<g:TextBox />
</e:valuebox>
</e:ValueBoxEditorDecorator>
</g:HTMLPanel>
</ui:UiBinder>
Run Code Online (Sandbox Code Playgroud)
对于我的编辑:
public class GarageEditor extends Composite implements Editor<Garage> {
@UiField
ValueBoxEditorDecorator<String> personalReference;
interface GarageEditorUiBinder extends UiBinder<Widget, GarageEditor> {
}
private static GarageEditorUiBinder uiBinder = GWT.create(GarageEditorUiBinder.class);
public GarageEditor() {
initWidget(uiBinder.createAndBindUi(this));
}
}
Run Code Online (Sandbox Code Playgroud)
在什么时候我必须调用我的验证器,我该如何与它集成?
更新:
我实际上正在寻找一种方法来检索具有关键属性路径的地图,以及编辑器的值.委托上有一个路径字段,但这不是编辑对象中的路径,而是编辑器类中的路径.
有人知道是否有可能做这样的事情?
以下内容替换任何当前的css类名称.它似乎打电话setStyleName.
<g:DecoratorPanel styleName="{style.myCssClass}">
Run Code Online (Sandbox Code Playgroud)
我真正想要做的是添加一个类名,比如调用addStyleName.
有可能做我正在尝试的事情吗?
如何使用UiBinder添加列表框项?
我想创建一个组件来装饰它的子节点,例如:
mycomponent.ui.xml:
<g:FlowPanel addStyleNames="myStyle">
<!-- how can i render children ? -->
</g:FlowPanel>
Run Code Online (Sandbox Code Playgroud)
然后其他人可以使用:
<myapp:mycomponent>
<g:Label>Decorated child</g:Label>
</myapp:mycomponent>
Run Code Online (Sandbox Code Playgroud)
我怎样才能让孩子们进入uibinder?(或者在Java中,如果必须的话)
我正在尝试使用UiBinder在GWT 2.0下使用简单的布局.我想要获得的布局是模仿Java的BorderLayout的布局,您可以在其中指定北,南,东,西和中心方向的不同面板; 因为我正在使用DockLayoutPanel.我想得到一个页眉和页脚,两者都有固定的宽度.剩余的视口空间将被分配给DockLayoutPanel中心插槽的小部件占用.
我得到的当前.ui.xml文件是:
<g:DockLayoutPanel unit='EM'>
<g:north size='2'>
<g:HTML>HEADER</g:HTML>
</g:north>
<g:south size='2'>
<g:HTML>FOOTER</g:HTML>
</g:south>
<g:center>
<g:HTML>
<div id='loginform'>Hello!</div>
</g:HTML>
</g:center>
</g:DockLayoutPanel>
Run Code Online (Sandbox Code Playgroud)
浏览器仅在左上角呈现HEADER.我怎样才能实现我正在寻找的布局?看来你可以在使用GWT布局面板之前知道更多的CSS,但这种方式与使用它创建UI的目的相违背.
我正在使用UiBinder构建一个小部件,我需要将它封装在一个<span />但是UiBinder只给我<div />.例如<g:HTMLPanel />=> <div />.HorizonPanel,FlowPanel,VerticalPanel也只给出了<div />.
有人知道解决方案吗?
什么可以提供给a的location属性
<c:SimplePager ui:field='pager' location='HERE' />
Run Code Online (Sandbox Code Playgroud)
我尝试了CENTER,但它没有用,我在费用示例应用程序中看到他们没有位置属性,而是将其设置为在UiBinder中创建它.但我不能这样做,因为它是必需的属性.该怎么办?