java - 表单验证和 SuggestBox 选择之间的 GWT 冲突

标签 java gwt widget

我对 GWT SuggestBox 小部件有疑问。

我在表单的每个字段上都有一个处理程序,可以使用回车键提交它。 不过我也想用回车键填充建议框。

因此我试图找到一种合适的方法: 1.当我在建议框中选择一个项目(显示建议菜单)并按 Enter 键时,选择该项目 2.当建议菜单不显示验证表单时

任何想法

最佳答案

当您查看 SuggestBox 构造函数时,您会发现 this :

public SuggestBox(SuggestOracle oracle,
                  ValueBoxBase<java.lang.String> box,
                  SuggestBox.SuggestionDisplay suggestDisplay)

oracle - supplies suggestions based upon the current contents of the text widget

box - the text widget

suggestDisplay - the class used to display suggestions

SuggestionDisplay 是您需要检查 isSuggestionListShowing() 的内容。

<小时/>

示例代码:

@UiField
FormPanel uiFormPanel;
@UiField
TextBox uiTextBox;
@UiField(provided = true)
SuggestBox uiSuggestBox;

public SubmitTest() {

    // provided fields
    MultiWordSuggestOracle oracle = new MultiWordSuggestOracle();
    oracle.add("Cat");
    oracle.add("Dog");
    oracle.add("Horse");
    oracle.add("Canary");

    TextBox box = new TextBox();
    final DefaultSuggestionDisplay suggestDisplay = new DefaultSuggestionDisplay();

    uiSuggestBox = new SuggestBox(oracle, box, suggestDisplay);

    initWidget(uiBinder.createAndBindUi(this));

    uiFormPanel.addSubmitHandler(new SubmitHandler() {
        @Override
        public void onSubmit(SubmitEvent event) {
            event.cancel();
            Window.alert("Submit!");
        }
    });

    uiTextBox.addKeyDownHandler(new KeyDownHandler() {
        @Override
        public void onKeyDown(KeyDownEvent event) {
            if(event.getNativeKeyCode() == KeyCodes.KEY_ENTER)
                uiFormPanel.submit();
        }
    });

    uiSuggestBox.addKeyDownHandler(new KeyDownHandler() {
        @Override
        public void onKeyDown(KeyDownEvent event) {
            if(event.getNativeKeyCode() == KeyCodes.KEY_ENTER)
                if(!suggestDisplay.isSuggestionListShowing())
                    uiFormPanel.submit();
        }
    });
}

UiBinder:

<g:FormPanel ui:field="uiFormPanel">
    <g:HTMLPanel>
        <g:TextBox ui:field="uiTextBox" />
        <g:SuggestBox ui:field="uiSuggestBox" />
    </g:HTMLPanel>
</g:FormPanel>

关于java - 表单验证和 SuggestBox 选择之间的 GWT 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44201734/

相关文章:

Gwt super 开发模式 : recompile doesn't work

安卓 4.0 : widgets not appearing?

java - 在另一个字符串的开头插入字符串

java - Spring MVC 示例 Web 应用程序

java - 使用 ServletOutputStream 在 Java servlet 中写入非常大的文件而不会出现内存问题

gwt - 写入新窗口

java - 当 onCreate() 方法调用时如何插入第一行值静态,而其他方法在单击数据库中的按钮时将是动态的?

java - 为什么开源 GWT 应用程序如此之少?

flutter - 无状态 flutter 小部件中的非最终字段

python - 如何阻止 gtk.Entry 失去对箭头按键的关注?