我有一个表,我正在使用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 7,在我的应用程序中,我有时会使用子窗口.在一个案例中,我有一个模态窗口,里面有几个组件.单击模态窗口内的某些组件时,它会打开另一个窗口.我希望这个窗口在用户点击它时自动关闭(例如再次在模态窗口上).在Vaadin采样器中,这种行为似乎在显示源时实现(单击右上角的源按钮).如果不是从模态窗口打开,则行为应该相同,但是从UI或任何其他子窗口打开.
我尝试了几件事:
使用Popupview是不可能的,因为我需要从组件(按钮或图像)打开窗口
将BlurListener添加到新窗口不起作用,因为如果我在窗口内单击,则会触发blurevent(例如移动窗口)
将ClickListener添加到UI没有帮助,因为单击模式窗口时未触发事件.
实现这一目标的正确方法是什么?
谢谢拉斐尔
我正在尝试更改OptionGroup以显示Horizontal.在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)
任何的想法?
我对@PreserveOnRefresh注释的目的有疑问.这个特定注释的目的是什么?它必须使用的场景是什么?使用/不使用此注释有什么影响?
谢谢,Daniccan副总裁
我已经开始使用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) 现在vaadin 7.3已经问世,它拥有非常漂亮的Valo主题.但我不知道如何将它导入我的项目?现在我使用我的自定义scss文件的默认主题.我想品尝Valo.请有人帮我如何将valo主题导入我的项目.
更重要的是,我如何选择主题样式?Valo Theme Demo有不同的主题风格,如Default,Blueprint,Dark,Metro,Flat.如何按我的意愿选择这个类别?
我为我的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?
我已经在主界面中添加了一个弹出窗口,如下所示:
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网格中的复选框。我无法使用多选模式,因为我需要两列带有复选框。Checkboxes外壳程序的列具有标题,但是Checkboxes本身的外壳没有标题。有人有主意吗?
我在分析 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) vaadin7 ×10
vaadin ×8
java ×3
annotations ×1
atmosphere ×1
frameworks ×1
java-ee ×1
java-threads ×1
jstack ×1
vaadin-grid ×1
web ×1
wildfly-8 ×1
window ×1