我有一个表,我正在使用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) 我正在尝试更改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)
任何的想法?
我正在尝试在我的应用程序中使用BeanFieldGroup创建一个ComboBox组件,但仍然无法做到这一点.我尝试先创建一个组合框,然后在buildAndBind中添加这个组合框,但也不起作用.
我正在尝试这个:
/** person's bean */
@Entity
public class Person{
@Id
@GeneratedValue
private Integer id;
@NotNull
@NotEmpty
@Size(min=5, max=50, message="insert first name")
private String firstName;
@NotNull
@NotEmpty
@Email private String email;
//female or male
private String gender;
//get and set
}
/** app */
public class PersonView extends CustomComponent{
private final BeanFieldGroup<Person> binder = new BeanFieldGroup<Person>(Person.class);
private Person bean = new Person();
private ComboBox gender;
public PersonView(){
VerticalLayout vLayout = new VerticalLayout();
Field<?> field = null;
field = binder.buildAndBind("Gender", "gender", …Run Code Online (Sandbox Code Playgroud) 如果我有一个具有BigDecimal属性的对象,我想Table用特定格式显示它:2个分数,并根据数量使用"+"或" - "符号.
如:+10.50,-3.20
如何在vaadin表中实现这一目标?有一种方法table.setConverter(..),但这实际上会强制在例如a BigDecimal.class和a 之间进行转换String.class.我更喜欢的只是一个视图格式化程序,它只是以不同的方式显示对象数据.
我可以在Vaadin 表中的列标题中添加工具提示吗?
表列通常缩写为适合其行内容的宽度.对于用户来说,如果列标题的全长版本可以作为工具提示呈现,那将是很好的.
对于按钮和标签等,我可以调用setDescription为自动工具提示指定文本.有没有办法为Table标题执行此操作?
我找到了这个问题,用于向行和单元格添加工具提示.
我发现这个Vaadin论坛在一个表头中的图标上发布了一些用于工具提示的HTML.但是我想在标题上只是一个简单的工具提示,并且没有找到这样的信息.
假设没有此类功能可用,我已提交此功能请求#14419.
Vaadin 7是否提供某种会话标识符?我想跟踪每个会话的一些用法.
我查看了文档,VaadinSession但没有发现任何问题.
我想我可以通过生成一个UUID并通过调用将它附加到VaadinSession来自行滚动setAttribute.但是如果Vaadin给我一个标识符就没有必要了.
如何使GridVaadin 7中的新窗口小部件显示所有数据行(而不是滚动)?
我试图将我的布尔值显示为vaadin网格中的复选框。我无法使用多选模式,因为我需要两列带有复选框。Checkboxes外壳程序的列具有标题,但是Checkboxes本身的外壳没有标题。有人有主意吗?
我使用vaadin 7并使用maven构建它.
有一个名为'the_name_of_myProject'/ src/main/webapp/VAADIN/themes/mytheme/styles.css的CSS文件如果我以任何方式修改它,我的修改将被下一个maven构建覆盖.看起来总是从jar重新生成文件.
如果我希望这些修改能够存活,我该怎么办?
我用不同的名称创建了自己的主题,但它也没有帮助,因为它的.css以相同的方式被覆盖.
任何建议表示赞赏.
Vaadin似乎正在向两个方向发展:
它们是打算现在一起使用还是将来使用?或者只是2个独立的,不相关的产品?
例如,Vaadin网格元素(不要与Vaadin 7的Java Grid混淆)是否意味着在'Java-land'中使用?
我找到了这个服务器端元素帖子,它讲述了从服务器端创建/操作Javascript Web组件.这是我们打算使用的吗?或者是否有其他东西来简化Java中的组件使用?
..我觉得我错过了什么.
vaadin7 ×10
vaadin ×8
java ×6
vaadin-grid ×2
css ×1
frameworks ×1
javascript ×1
maven ×1
session ×1