标签: vaadin7

如何使用包装器从表中的TextField验证整数

我有一个表,我正在使用createField()来创建字段.在编辑模式下,用户可以在字段中输入文本.

此表中的一列应该只允许整数,因此我使用的是IntegerRangeValidator.

验证应该是动态的(按类型),如果输入验证为false,则应显示一个小的红色感叹号,工具提示应该说"仅允许整数!".为了能够显示这些感叹号并进行动态验证,我需要使用一个每200ms监听textChanges的包装器.

问题是TextField返回一个String,因此验证器将所有内容解释为字符串,即使用户在字段中键入了一个整数.

在Vaadin 7中 - 当在包装器中的重写textChange-method中执行验证时,如何从表内的TextField验证整数?

createField方法:

@Override
public Field<?> createField(Container container, Object itemId, Object propertyId, com.vaadin.ui.Component uiContext) {

    TextField tField = null;

    tField = (TextField) super.createField(container, itemId, propertyId, uiContext);
    tField.setBuffered(true);
    addFieldListeners(tField);

    if (propertyId.equals("age") {
        tField.setRequired(true);
        tField.setRequiredError("This field is required!");
        // tField.setConverter(new StringToIntegerConverter()); <-- I also tried this, without success
        tField.addValidator(new IntegerRangeValidator("Only Integers allowed!", 1, 150));
        @SuppressWarnings({ "unchecked", "rawtypes" })
        TableDataValidatingWrapper<TextField> wField = new TableDataValidatingWrapper(tField);
        return wField;
    } else {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

包装:

public class TableDataValidatingWrapper<T> …
Run Code Online (Sandbox Code Playgroud)

vaadin vaadin7

5
推荐指数
2
解决办法
9045
查看次数

如何在窗口外单击鼠标关闭Vaadin子窗口?

我正在使用vaadin 7,在我的应用程序中,我有时会使用子窗口.在一个案例中,我有一个模态窗口,里面有几个组件.单击模态窗口内的某些组件时,它会打开另一个窗口.我希望这个窗口在用户点击它时自动关闭(例如再次在模态窗口上).在Vaadin采样器中,这种行为似乎在显示源时实现(单击右上角的源按钮).如果不是从模态窗口打开,则行为应该相同,但是从UI或任何其他子窗口打开.

我尝试了几件事:

  • 使用Popupview是不可能的,因为我需要从组件(按钮或图像)打开窗口

  • 将BlurListener添加到新窗口不起作用,因为如果我在窗口内单击,则会触发blurevent(例如移动窗口)

  • 将ClickListener添加到UI没有帮助,因为单击模式窗口时未触发事件.

实现这一目标的正确方法是什么?

谢谢拉斐尔

window vaadin vaadin7

5
推荐指数
1
解决办法
7171
查看次数

OptionGroup水平?

我正在尝试更改OptionGroup以显示Horizo​​ntal.在vaadin7书中有一个用CSS改变的例子,但不起作用.

我正在尝试这个.

//styles.scss
/** optiongroup */
/* Lay the options horizontally */
.v-select-optiongroup-horizontal .v-select-option {
    display: inline-block;
}
/* Avoid wrapping if the layout is too tight */
.v-select-optiongroup-horizontal {
    white-space: nowrap;
}
/* Some extra spacing is needed */
.v-select-optiongroup-horizontal .v-select-option.v-radiobutton {
    padding-right: 10px;
}
Run Code Online (Sandbox Code Playgroud)


//Here the OptionGroup
OptionGroup optionGroup = new OptionGroup();
optionGroup.addItem("Usuário");
optionGroup.addItem("Representante");
Run Code Online (Sandbox Code Playgroud)

任何的想法?

java frameworks vaadin vaadin7

5
推荐指数
1
解决办法
3147
查看次数

@PreserveOnRefresh - 目的和需求?

我对@PreserveOnRefresh注释的目的有疑问.这个特定注释的目的是什么?它必须使用的场景是什么?使用/不使用此注释有什么影响?

谢谢,Daniccan副总裁

java annotations vaadin web vaadin7

5
推荐指数
1
解决办法
2653
查看次数

Vaadin 7,Atmosphere和Server Push问题

我已经开始使用Vaadin 7.2.4的Maven原型构建一个项目,并且我收到了很多与Atmosphere启动问题相关的错误.事实上,我将无法启用我需要使用插件(OAuthButtonPopup)的推送支持.虽然有很多关于Atmosphere的一般性聊天,但我似乎无法找到任何特定于此问题的内容,所以我想知道我是否存在安装/配置问题,特别是因为似乎试图实例化一些与Jetty相关的类这似乎与我的安装无关.

当前设置如下:Java 8 SDK,Java EE7 JDK,Idea IntelliJ 13,Vaadin 7.2.4和Wildfly 8.

任何指针都将非常感激.

部署时的错误跟踪如下:

[2014-07-17 10:21:10,394] Artifact OAuthPopupTest:war: Artifact is being deployed, please wait...
[0m22:21:10,540 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015876: Starting deployment of "OAuthPopupTest-1.0-SNAPSHOT.war" (runtime-name: "OAuthPopupTest-1.0-SNAPSHOT.war")
[0m[33m22:21:12,921 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-14) JBAS015960: Class Path entry xml-apis.jar in /content/OAuthPopupTest-1.0-SNAPSHOT.war/WEB-INF/lib/serializer-2.7.1.jar  does not point to a valid jar for a Class-Path reference.
[0m[33m22:21:13,286 WARN  [org.jboss.as.ee] (MSC service thread 1-8) JBAS011006: Not installing optional component org.eclipse.jetty.continuation.Servlet3Continuation$1 due to an exception (enable …
Run Code Online (Sandbox Code Playgroud)

java-ee atmosphere vaadin7 wildfly-8

5
推荐指数
1
解决办法
7334
查看次数

如何在Vaadin的Valo之上创建不同的主题?

现在vaadin 7.3已经问世,它拥有非常漂亮的Valo主题.但我不知道如何将它导入我的项目?现在我使用我的自定义scss文件的默认主题.我想品尝Valo.请有人帮我如何将valo主题导入我的项目.

更重要的是,我如何选择主题样式?Valo Theme Demo有不同的主题风格,如Default,Blueprint,Dark,Metro,Flat.如何按我的意愿选择这个类别?

vaadin vaadin7

5
推荐指数
2
解决办法
7823
查看次数

Vaadin Grid自定义TextArea编辑器未完全显示

我为我的Vaadin 7 Grid定义了一个自定义编辑器

longColumn.setEditorField(getTextArea());
Run Code Online (Sandbox Code Playgroud)

其中getTextArea()是:

private Field<?> getTextArea() {
   TextArea ta=new TextArea();
   ta.setWidth("300px");
   ta.setHeight("200px");
   return ta;
}
Run Code Online (Sandbox Code Playgroud)

TextArea似乎具有给定的大小,但它被切割到行的高度,并且完全不可用.

在此输入图像描述

是否有任何方法可以使编辑器更大,以便使用大的TextArea?

vaadin vaadin7

5
推荐指数
1
解决办法
424
查看次数

在Vaadin中将弹出窗口水平居中

我已经在主界面中添加了一个弹出窗口,如下所示:

Window component = new Window();
UI.getCurrent().addWindow(component);
Run Code Online (Sandbox Code Playgroud)

现在,我希望我的弹出窗口水平居中,例如距屏幕顶部40像素。据我所知,Vaadin有4种定位窗口的方法。

component.center()
component.setPosition(x, y)
component.setPositionX(x)
component.setPositionY(y)
Run Code Online (Sandbox Code Playgroud)

这些都不是我真正想要的。我最初希望setPositionY可以对我有所帮助。这的确使我与顶部之间的距离正确,但是x位置现在设置为0,我希望它在此居中。

如果我能够计算x位置应该是什么,setPosition可能会有所帮助,但这将需要我知道组件的宽度(以像素为单位),但是component.getWidth只能告诉我100%。

接下来,我尝试在组件上使用CSS样式,编写并使用明确的CSS规则,然后使用addStyleName将其添加到组件中。似乎Vaadin会用自己的默认值覆盖我在CSS中编写的内容...

任何想法如何正确放置我的Window组件?

vaadin vaadin7

5
推荐指数
1
解决办法
2142
查看次数

如何在vaadin网格中显示复选框而不是布尔值?

我试图将我的布尔值显示为vaadin网格中的复选框。我无法使用多选模式,因为我需要两列带有复选框。Checkboxes外壳程序的列具有标题,但是Checkboxes本身的外壳没有标题。有人有主意吗?

vaadin vaadin7 vaadin-grid

5
推荐指数
3
解决办法
5705
查看次数

JAVA 线程转储:等待线程太多

我在分析 vaadin 7.0 JAVA 应用程序的线程转储和用 Spring MVC 编写的集成层时遇到困难。处于等待状态的线程过多,导致应用程序在高峰时段变慢,并导致简单代码的执行延迟长达 10 秒。以下是等待线程中出现的跟踪:-

priority:5 - threadId:0x00007f98b48de800 - nativeId:0x6511 - nativeId (decimal):25873 - state:WAITING
stackTrace:
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006d5444af0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

我在应用程序的许多地方使用 API 轮询,以下是我如何进行 API 轮询的代码:-

@Override
        public void run()
        {
            int counter = 1;

            while (true)
            {
                try
                {
                    if (counter == 1)
                        Thread.sleep(5000);
                    else
                        Thread.sleep(10000);

                    System.out.println("Call Some API");
                    if (counter …
Run Code Online (Sandbox Code Playgroud)

java out-of-memory jstack vaadin7 java-threads

5
推荐指数
1
解决办法
5124
查看次数