天道酬勤,学无止境

在 GWT / Bootstrap 中设置 data- 属性(Setting data- attribute in GWT / Bootstrap)

问题

我正在使用 GWT 并通过 GWT-Bootstrap 库实现引导程序。

我似乎找不到向元素添加数据属性的方法?

我可以通过直接编写 HTML 来实现:

HTMLPanel htmlPanel = new HTMLPanel("<button type=\"button\" class=\"btn\" data-custom=\"some-custom-data\">Hello World</button>");
menuControl.add(htmlPanel);

但这只是丑陋并违背了使用 GWT 的目的(也可以编写纯 HTML 代码)。

我正在寻找执行以下操作的方法:

Button button = new Button();
button.setText("Hello World");
button.setStyleName("btn");
// Fine up to here, but now i want:
button.setAttr("data-custom", "some-custom-data");
回答1

button.getElement().setAttribute("data-custom","some-custom-data"); ?

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 在gwt.xml中设置语言环境不起作用(Setting locales in gwt.xml do not work)
    问题 在我的模块xml文件中,我有以下内容: <module rename-to="UIGenerator"> <inherits name="com.google.gwt.http.HTTP" /> <inherits name="com.google.gwt.xml.XML" /> <inherits name="com.google.gwt.i18n.I18N" /> <inherits name="com.google.gwt.i18n.CldrLocales" /> <set-configuration-property name="locale.useragent"value="Y" /> <extend-property name="locale" values="de" /> <extend-property name="locale" values="fr" /> <set-property name="locale" value="de, fr" /> <set-property-fallback name="locale" value="de" /> <entry-pointclass="mypackage.UIGeneratorEntryPoint" /> </module> 但是每次当我尝试使用语言环境时,它都会返回默认的默认语言,即英语。
  • Setting data- attribute in GWT / Bootstrap
    I am working with GWT and implementing bootstrap through GWT-Bootstrap library. I can't seem to find a way to add data- attributes to my elements? I can do it by writing HTML directly: HTMLPanel htmlPanel = new HTMLPanel("<button type=\"button\" class=\"btn\" data-custom=\"some-custom-data\">Hello World</button>"); menuControl.add(htmlPanel); But that's just ugly and defeat the purpose of using GWT (might as well write a plain HTML code). I am looking for ways to do something like: Button button = new Button(); button.setText("Hello World"); button.setStyleName("btn"); // Fine up to here, but
  • java / gwt UI编码-干净的代码(java / gwt UI coding - clean code)
    问题 我已经开始使用gwt进行一些基本的Java编码,而我有点担心我的主类。 例如-如何分隔密钥处理程序,因为它们触发了UI的许多更改,我如何才能将其移到单独的.class文件中,并且仍然能够访问主类中的所有各种小部件,而不必将所有内容传递给处理程序(即,我在click事件之后处理的所有小部件)。 我已经在Google上搜索过,但没有遇到任何特别好的示例-知道我可以阅读的任何易读代码库,以了解应如何做? (gwt自己的tut很基本,只是将所有东西都整理到一个文件中) 谢谢! 回答1 我讨厌说些没什么想象力的东西,但是MVC可以工作-虽然不是最终的方法,但是它可以使您井井有条。 编辑:在搜索一个半相关的主题时,我遇到了一个类似的想法,但有更详细的介绍。 就GWT而言,这意味着您应该考虑将GUI组件放在一个类中,将所有事件处理放在第二个类中,然后将对象模型对象与其他两个对象分开。 实现此目的的一种方法是将GUI上的大多数或所有控件公开。 这听起来有些la脚,但是它们的用法封装在控制器内,所以这并不是您具有不可控制的访问权限-实际上,与所有成员都是私有的相比,访问权限的定义更清晰/定义更好,但您的视图代码已与控制器组合在一起。 具体技巧: 让听众成为他们自己的班级。 您经常可以重用它们-换句话说,避免使用匿名内部类。 有时我会创建一个侦听器类,并为每个按钮/控件实例化一个新实例,这些按钮
  • 如何根据该单元格(GWT)的值在CellTable中设置特定单元格的样式?(How to style specific cells in CellTable depending the value of that cell (GWT)?)
    问题 好的,我有一个CellTable ,它具有3列和2行。 我希望表中某些特定单元格(不是所有单元格)中的文本为粗体。 请看下面的代码: ListDataProvider<List<String>> dataProvider = new ListDataProvider<List<String>>(); dataProvider.addDataDisplay(table); List<List<String>> list = dataProvider.getList(); List<String> sublist1= Arrays.asList("223","546","698"); List<String> sublist2= Arrays.asList("123","876","898"); List<String> sublist2= Arrays.asList("123","896","438"); IndexedColumn column1=new IndexedColumn(0); table.addColumn(column1, "Col1"); IndexedColumn column2=new IndexedColumn(1); table.addColumn(column2, "Col2"); IndexedColumn column3=new
  • 如何在 jboss 上调试 GWT 客户端代码(How to debug GWT client side code on jboss)
    问题 我从 GWT 和 smartgwt 开始,我意识到当你的代码在 jetty 上工作时不一定在 Jboss 上工作。 当客户端出现故障时,有没有一种方法可以调试异常或任何类型的错误,jboss 控制台什么也没说。 我想知道在 jboss 上运行时是否可以将码头窗口附加到应用程序。 我正在使用 Netbeans,jboss 5.1 更新: 感谢您的帮助,我一直在使用com.google.gwt.logging.Logging并且效果很好,但我正在寻找一种调试客户端代码的方法,例如使用 netbeans。 我知道如何使用set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y %JAVA_OPTS%调试启动 jboss 的服务器端代码set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y %JAVA_OPTS%然后我将 netbeans 调试器连接到 8787 端口。 有没有办法从 Jboss 做类似的事情来调试客户端? 我也知道如何使用 gwt:debug 调试客户端代码,但在这种情况下,我的应用程序没有在 jboss 上运行,而是在 jetty 上运行。
  • 如何在 GWT RichTextArea 中设置光标位置(How to setcursor position in GWT RichTextArea)
    问题 有没有办法在 GWT RichTextArea 中设置光标位置。 在 TextArea 中有 setCusrorPosition() 方法可以这样做,但在 RichTextArea 中没有。 也许有一个本地 JavaScript(从 GWT 调用)可以在 RichTextArea 中设置光标位置? 回答1 你是对的 RichTextArea 没有提供 setSelectionRange 方法,但我已经使用 JSNI 创建了一个。 下面是方法, public native void setSelectionRange(Element elem, int pos, int length) /*-{ try { var selection = null, range2 = null; var iframeWindow = elem.contentWindow; var iframeDocument = iframeWindow.document; selection = iframeWindow.getSelection(); range2 = selection.getRangeAt(0); //create new range var range = iframeDocument.createRange(); range.setStart(selection
  • 在 GWT 中设置选定的文本(为了使复制粘贴更容易)(Set selected text in GWT (in order to make copy paste easier))
    问题 在 GWT 中,显然您必须使用一些 Flash 组件来更改剪贴板。 由于我不想使用 Flash,但我确实想从我的应用程序中复制和粘贴文本,因此如果有人点击它,我想设置选中的文本。 用户唯一需要做的就是键入 Ctrl-C/Ctrl-V 进行复制和粘贴(在 Windows 中)。 这可能吗? 我该怎么做呢? 更多信息: 我想在其中使用它的应用程序位于 http://borkent-app2.appspot.com/。 这是我用来自学希伯来语单词的应用程序(我的母语是荷兰语)。 使用标签将希伯来语单词放置在 RootPanel 上。 有时我想复制和粘贴希伯来语单词(例如,当我想在 Google 中搜索它时),但选择它有点麻烦(可能是因为从右到左的文本方向)。 所以我想通过只点击它所在的标签来选择希伯来语单词的文本。 回答1 像这样的东西? public void onModuleLoad() { final Label word = new Label("some text"); word.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { markText(word.getElement()); } }); word.getElement().setId(
  • 线程“ main”中的异常java.lang.OutOfMemoryError:GWT应用程序中超出了GC开销限制(Exception in thread “main” java.lang.OutOfMemoryError: GC overhead limit exceeded in GWT application)
    问题 我正在使用GWT和GAE开发应用程序。 当我尝试重建它或创建工件时,我收到很多错误,如下图所示。 我搜索了谷歌和堆栈溢出,我得到了一些答案,但没有解决我的特殊问题。 据我了解,我收到错误消息是因为我的垃圾收集器消耗了大量内存。 这是主要错误Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded 。 回答1 好,我解决了这个问题。 只需增加虚拟机编译项目所需的内存即可。 以前是128,现在更改为512。随着项目的增长,它需要更多的内存来编译项目的类。以下是在Injtellj IDEA中执行此操作的方法。 右键单击项目模块->打开模块设置->模块-> GWT->编译器最大堆大小(Mb)->更改为512。 注意:在Ideal Intellij 12+中,项目设置位于:文件->项目结构或Ctrl + Alrt + Shitf + S 回答2 我遇到了同样的问题 Exception in thread “main” java.lang.OutOfMemoryError: GC overhead limit exceeded 当我尝试修复此错误时,它显示了相同的错误。 因此,不要着急,只需在“运行”->“运行配置”->“单击参数”->“内部VM参数类型”中设置此选项,即可增加大小
  • 使用 GWT 和 AppEngine Blobstore 上传多个文件?(Multiple file upload using GWT and AppEngine Blobstore?)
    问题 我将如何在 GWT 和 AppEngine Blobstore 中创建现代的、类似于 Gmail 的多文件上传? 最常提出的解决方案是 gwtupload,这是一个由 Manolo Carrasco 编写的优秀 GWT 组件。 但是,最新版本 0.6.6 不适用于 blobstore(至少我无法使用它),并且它不支持多文件选择。 在最新的 0.6.7 快照中有一个用于多文件选择的补丁,但尽管它允许选择多个文件(使用 HTML5 中的“multiple”属性),但它仍然在一个巨大的 POST 请求中发送它们(并且显示进度一大堆文件)。 还有其他关于 SO 的问题(例如此处或此处),但答案通常使用 HTML5“multiple”属性并将它们作为一个大的 POST 请求发送。 它有效,但不是我所追求的。 回答1 尼克约翰逊为此写了一些很棒的博客文章。 他使用通用且广为接受的 JavaScript 上传组件 Plupload,并将文件上传到用 Python 编写的 AppEngine 应用程序。 Plupload 支持不同的后端(运行时)以支持多文件选择(HTML5、flash、Silverlight 等)并处理上传进度和其他与上传相关的客户端事件。 他的解决方案的问题是(1)它在 Python 中,(2)它在 JavaScript 中。 这是 gwt-plupload 出现的地方。
  • 如何使用UiBinder声明从属样式名称(How to declare dependent style names with UiBinder)
    问题 我有一个包含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> 我想控制此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
  • GWT RPC - 它是否足以抵御 CSRF?(GWT RPC - Does it do enough to protect against CSRF?)
    问题 更新:GWT 2.3 引入了更好的机制来对抗 XSRF 攻击。 请参阅 http://code.google.com/webtoolkit/doc/latest/DevGuideSecurityRpcXsrf.html GWT 的 RPC 机制对每个 HTTP 请求执行以下操作: 设置两个自定义请求标头 - X-GWT-Permutation 和 X-GWT-Module-Base 将内容类型设置为 text/x-gwt-rpc; 字符集=utf-8 HTTP 请求始终是 POST,并且在服务器端 GET 方法会引发异常(不支持该方法)。 此外,如果这些标头未设置或具有错误的值,服务器将无法处理并出现“可能是 CSRF?”异常。 或类似的东西。 问题是:这足以防止CSRF吗? 有没有办法在纯跨站点请求伪造方法中设置自定义标头和更改内容类型? 回答1 如果浏览器正在使用此 GWT RPC,那么它 100% 容易受到 CSRF 的攻击。 content-type 可以在 html <form>元素中设置。 X-GWT-Permutation和X-GWT-Module-Base不在 Flash 的禁止标题黑名单中。 因此,可以使用 flash 进行 CSRF 攻击。 您可以信任的用于 CSRF 保护的唯一标头元素是“referer”,但这并不总是最好的方法。 尽可能使用基于令牌的
  • GWT动态语言环境(GWT Dynamic Locale)
    问题 我想在Spring LocaleContextHolder的帮助下设置gwt-locale接受用户选择的语言环境。 public static final String getCurrentLocale() { return LocaleContextHolder.getLocale().getLanguage(); } 我实际上在Spring MVC中具有登录界面,而在gwtp内部仪表板。 在将登录名也必须传递到gwt之前,相同的语言环境用户在外部接口中进行选择。 不幸的是,我没有看到任何gwt内置的Locale setter。 我的默认语言环境为kh X.gwt.xml是: <inherits name="com.google.gwt.uibinder.UiBinder" /> <inherits name="com.google.gwt.inject.Inject" /> <inherits name="com.gwtplatform.mvp.Mvp" /> <inherits name="gwtquery.plugins.droppable.Droppable"/> <source path="client" /> <source path="shared" /> <define-configuration-property name="gin.ginjector"
  • 确定浏览器是否在 gwt bootstrap 中运行的设备(determine if the device on which browser is running in gwt bootstrap)
    问题 他们是否可以通过 gwt 或 gwt bootstrap 找到运行 Web 应用程序的设备。 就像设备是iphone,平板电脑,desktop.ipad 等,请帮忙。 回答1 您根本不需要引导程序就可以知道您的客户端正在运行哪个浏览器。 就打电话... Navigator.getUserAgent() ...获取浏览器的用户代理。 此处提供了所有可用的用户年龄列表: http://www.useragentstring.com/pages/All/ 例如,检查用户代理字符串中的“ipad”匹配。 回答2 设置 GWT 允许您定义将在执行延迟绑定机制期间解析的属性(应用程序启动序列的一部分,请参阅此处的延迟绑定元素)。 例如,在您的应用程序的gwt.xml文件中定义它: <define-property name="formfactor" values="desktop,tablet,mobile" /> 然后在同一个文件中提供它: <property-provider name="formfactor"> <![CDATA[ // my User Agent String-parsing JavaScript code ]]> </property-provider> 有关完整示例,请参阅 MobileWebApp,一个 GWT 示例应用程序。 具体来说,看看
  • NoSuchMethodError: org.eclipse.jetty.websocket.server.WebSocketServerFactory.<init>(Ljavax/servlet/ServletContext;)V
    I have this exception when launching my application via eclipse plugin: "Run as" > "GWT Development Mode with jetty" Environment: - GWT SDK 2.8 - spring-boot 1.5.2.RELEASE - jetty 9.4.2 - GWT Eclipse Plugin 3.0.0 Context: migrate a GWT 2.6 application to GWT 2.8 and using spring-boot application pom generated with GWT webAppCreator Here is the stack trace: **Exception in thread "main" java.lang.NoSuchMethodError: org.eclipse.jetty.websocket.server.WebSocketServerFactory.<init>(Ljavax/servlet/ServletContext;)V** at org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration.<init>
  • GWT SuperDevMode 断点不起作用(GWT SuperDevMode breakpoints not working)
    问题 我正在使用 IntelliJ,我试图在一个类中放置一个断点,有时它可以工作,但有时它会将调试器带到文件MyApp-0.js ,我必须调试神秘生成的 javascript。 有没有办法在相应的 Java 文件中使用我的断点导航? 我正在使用 IntelliJ 13.1.2 是的,我的 GWT 模块使用超级开发模式设置: <add-linker name="xsiframe"/> <set-configuration-property name="devModeRedirectEnabled" value="true"/> 编辑: 同样是的,我在最新版本的 Chrome 中使用了 Jetbrains javascript 调试插件。 我可以通过转到代码服务器页面手动从我的代码服务器访问我的源映射......使用 IntelliJ 插件我转到http://localhost:9876/sourcemaps/MyApp/并看到源代码。 看看配置在 IntelliJ 中应该是什么样子会很有用。 回答1 尝试 File -> Invalidate Caches and Restart。 回答2 您使用什么作为您的应用程序服务器? 您可能还必须在应用程序服务器参数中的某处指定代码服务器端口。 回答3 DevMode 和 Super DevMode 之间最重要的区别之一是执行代码的环境。
  • 如何在GWT中集成CKEditor(How to integrate CKEditor in GWT)
    问题 我正在寻找一种将CKEditor集成到我的GWT项目中的方法。 我进行了一些谷歌搜索,发现了这个项目:https://code.google.com/p/gwt-ckeditor/,该项目已经被废弃多年了。 因此CKEditor完全过时了。 我还看到CKEditor在GWT之外加载到在GWT中创建的textarea中。 我不确定这是否是个好方法。 如果有人可以给我一些建议,将不胜感激。 预先感谢 回答1 您可以使用JSNI激活CKEditor。 要加载javascript文件,您可以在html页面中加载它,也可以使用ScriptInjector和StyleInjector加载它。 在GWT中,创建一个componant: package com.google.editor; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.user.client.TakesValue; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.TextArea; public class CKeditor extends Composite implements TakesValue
  • GWT 后退按钮浏览器(GWT back button browser)
    问题 例如当前页面是 www.google.com。 但是我在地址栏中输入了一个不同的网站地址并点击了。 该站点具有完整的 GWT 代码。 但我喜欢回到 www.google.com 的前一页。 所以我点击了浏览器的后退按钮。但是我怎样才能从当前的 GWT 代码中获得后退按钮的事件。 我可以在当前页面的 GWT 中设置任何后退按钮事件处理程序吗? 一个通知我后退按钮被按下的警报。 GWT有任何解决方案吗? 回答1 +1 给伊戈尔和亚历克斯。 如果您想使用 ClosingHandler,这里有一些您可以使用的代码: Window.addWindowClosingHandler(new Window.ClosingHandler() { @Override public void onWindowClosing(final ClosingEvent event) { event.setMessage("Don't you think my site is awesome?"); } }); ClosingHandler.onWindowClosing() 的 Javadoc 中的一些信息: /* Fired just before the browser window closes or navigates to a different * site. No user
  • 如何将占位符添加到 GWT 文本输入字段(How to add a placeholder to a GWT text input field)
    问题 有没有人知道 Google Web Toolkit 文本输入小部件会在字段为空时显示一条消息? 例如,一个名字字段会说:“输入您的名字”,当用户开始键入时,将删除标签以显示键入的文本。 你会怎么做? 丹尼尔 回答1 这在 textarea 中为我工作: yourInputField.getElement().setPropertyString("placeholder", "enter your first name"); 我认为这是一个 HTML5 功能。 回答2 使用此解决方案,您可以在 binder xml 中定义任何其他属性: 解决方案: public class MorePropertiesTextArea extends TextArea { private String moreProperties; public MorePropertiesTextArea() {} public void setMoreProperties(String moreProperties) { for (Entry<String, String> entry : parse(moreProperties).entrySet()) { getElement().setAttribute(entry.getKey(), entry.getValue()); } this
  • 我的 GWT 服务器端代码上的 http 代理(http proxy on my GWT server-side code)
    问题 我有一个 REST 服务器作为后端,它提供一组服务,而且它使用基本的身份验证方法进行访问。 现在我需要创建一个 GWT 前端,所以,我需要从 GWT 前端对 REST 后端执行 http 调用 经过一番研究,我发现 HttpBuilder 可以处理对后端的 http 请求,但是在尝试执行跨站点请求时似乎很痛苦,而且它还带有一些与 Safari 浏览器相关的限制。 然后我找到了这篇 https://developers.google.com/web-toolkit/doc/latest/tutorial/Xsite 文章,其中谈到了“您自己服务器上的代理”,所以它看起来是我正在寻找的解决方案对于,但我没有找到更多信息,或者一个例子。 它说我可以创建服务器端代码来从远程服务器(后端)下载数据,所以,我应该在服务器端代码上创建一个像 apache 客户端一样的http 客户端,并实现一组使用它来制作的服务向后端请求?,如果是,如何处理用户身份验证和会话? 如果没有,请给我一盏灯。 谢谢 回答1 it seem to be a pain when trying to perform cross-site requests, 实际上,如果我们可以在 Servlet Response Header 中设置,您可以从 GWT RequestBuilder 发出跨站点请求 Response
  • GWT-Bootstrap 与 GwtBootstrap3(GWT-Bootstrap vs. GwtBootstrap3)
    问题 据我所知,GWT 中有两个用于 Twitter Bootstrap 集成的库。 有 GWT-Bootstrap 和 GwtBootstrap3。 我刚刚开始了一个基于 GWT-Bootstrap 的项目,因为我没有意识到还有另一个 GWT Bootstrap 集成。 这两个项目在 GitHub 上看起来都很活跃,尽管 GWT-Bootstrap 确实有更多成员。 我知道 GWT-Bootstrap 基于 Bootstrap 版本 2。另一方面,GwtBootstrap3 包装了 Bootstrap 版本 3,并且似乎有更多的小部件可用。 由于 GWT-Bootstrap 项目仍然活跃,我认为他们迟早也会迁移到版本 3。 那么这两个项目有什么区别呢? 有人对他们有经验吗? 你会选择哪个? GwtBootstrap3 值得切换一个已经运行的项目吗? 回答1 我是 GwtBootstrap3 的作者。 在开始研究 GwtBootstrap3 之前,我一直在使用 GWT-Bootstrap,修复了一些错误并添加了一些功能。 当 Bootstrap 3 发布时,我决定从头开始创建一个新项目,因为 Bootstrap 2 和 3 之间发生了很多变化。在添加新组件时删除了一些组件,CSS 类发生了变化等。此外,BS3 的主要重点是“移动优先”。 关于 GWT-Bootstrap