- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Google-fu 没有透露任何信息,Stackoverflow 搜索显示了类似的问题,但机器人与我的情况并不完全一致。天哪,我在这里问了很多问题。
这不是考试问题、家庭作业问题或学校项目等。所以请不要费心回复这样的评论。这对我的学习没有帮助
简单地说,我在数据库中存储了一个项目:
条形码(bigint)
、check_out_date(日期时间)
、due_date(日期时间)
、is_available(字符串:True/False/Null
,我认为它比 UI 端的复选框更容易,也比在数据库中使用 bit(1) 更容易,因为我无法正确绑定(bind)。) is_late (String: True/False/Null,原因与上述相同)
、名称 (varchar)
、注释 (varchar)
、类型 (varchar)
is_late
和 is_available
绑定(bind)到一个包含 2 个值(True/False)的组合框,数据库读取这些值并实际在组合框中显示这些值,但我我无法编辑它们。作为引用,我在程序的不同部分还有另外 2 个组合框,但它们没有绑定(bind),因此可以工作。
如何使(强制?)这些组合框可编辑?感谢您的帮助,我很高兴成为这个社区的一员!
相关代码:如果您看到格式/括号错误,那是因为我省略了所有实际有效的代码。该程序确实编译并运行没有问题。
private class editPanel extends FormLayout {
private InventoryItem item;
private TextField itemName, itemType, itemBarcode;
private DateField checkOutDate, dueDate;
private Button save, delete, cancel;
private ComboBox<String> isAvailable, isLate;
private TextArea notes;
private Binder<InventoryItem> binder = new Binder<>(InventoryItem.class);
public editPanel() {
initEditConf();
initEditLayout();
addListeners();
setSizeUndefined();
Responsive.makeResponsive(this);
binder.bindInstanceFields(this);
}
private void addListeners() {
isAvailable.addValueChangeListener(e -> {
System.out.println("Test"); //still not editable with a listener
//and still not editable by explicitly calling setEnabled(true), setReadOnly(false);
});
private void initEditLayout() {
isAvailable = new ComboBox<String>("Availability");
isAvailable.setItems("True", "False"); //should be managed by sys too
isLate = new ComboBox<String>("Overdue");
isLate.setEnabled(false);
isLate.setDescription("Value is managed by the system");
isLate.setIcon(VaadinIcons.QUESTION_CIRCLE_O);
//isAvailable = new TextField("Availability");
//isAvailable.setEnabled(false);
//isLate = new TextField("Overdue");
//isLate.setEnabled(false);
cancel.addClickListener(e -> this.cancel());
save.addClickListener(e -> this.save());
delete.addClickListener(e -> this.delete());
binder.forMemberField(checkOutDate).withConverter(new LocalDateToDateConverter());
binder.forMemberField(dueDate).withConverter(new LocalDateToDateConverter());
binder.forMemberField(itemName).asRequired().withValidator((string -> string != null && !string.isEmpty()), "Values cannot be empty").bind("name");
binder.forMemberField(itemType).asRequired().withValidator((string -> string != null && !string.isEmpty()), "Values cannot be empty").bind("type");
binder.forMemberField(itemBarcode).withConverter(new StringToLongConverter(itemBarcode.getValue())).bind("barcode");
binder.forMemberField(isAvailable).bind("isAvailable");
binder.forMemberField(isLate).bind("isLate");
}
元素类别
@Table(name="item")
@Entity
public class InventoryItem implements Serializable, Cloneable {
private static final long serialVersionUID = 5592334329765505365L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long barcode;
@NotNull
private String name, type;
@Nullable
private String notes;
@Nullable
private String isAvailable, isLate;
@Nullable
@Temporal(TemporalType.TIMESTAMP)
private Date checkOutDate, dueDate;
public InventoryItem() {}
/* Excess constructors omitted */
@Column(name="barcode")
public Long getBarcode() {return barcode;}
public void setBarcode(Long barcode) {this.barcode = barcode;}
@Column(name="name")
public String getName() {return name;}
public void setName(String name) {this.name = name;}
@Column(name="type")
public String getType() {return type;}
public void setType(String type) {this.type = type;}
@Column(name="is_late")
public String getisLate() {return isLate;}
public void setLate(String isLate) {this.isLate = isLate;}
@Column(name="availability")
public String getisAvailable() {return isAvailable;}
public void setAvailable(String isAvailable) {this.isAvailable = isAvailable;}
@Column(name="notes") //bigtext?
public String getNotes() {return notes;}
public void setNotes(String notes) {this.notes = notes;}
@Column(name="check_out_date", columnDefinition="DATETIME")
public Date getCheckOutDate() {return checkOutDate;}
public void setCheckOutDate(Date checkOutDate) {this.checkOutDate = checkOutDate;}
@Column(name="due_date", columnDefinition="DATETIME")
public Date getDueDate() {return dueDate;}
public void setDueDate(Date dueDate) {this.dueDate = dueDate;}
}
最佳答案
很好地解决了您的问题!
setAvailable
和 getIsAvailable
不是很好的方法名称,因为它们不匹配。正如您所想,使用 setIsAvailable
或将属性更改为 available
并使用 setAvailable
/getAvailable
是正确的方法。
Vaadin Binder 使用 Java PropertyDescriptor 来查找 getter 和 setter。只需在大写属性名称之前添加 get
或 set
前缀即可。
如果您使用 boolean 值,则 is
前缀也可用于 getter,如 from the source code 所示。 .
在这种情况下,您可以有一个 boolean 属性 available
,然后是 setAvailable
和 isAvailable
访问器方法。
关于java - 数据绑定(bind)后组合框不可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50931989/
我有一个 mysql 表,其中包含一些随机数字组合。为简单起见,以下表为例: index|n1|n2|n3 1 1 2 3 2 4 10 32 3 3 10 4 4
我有以下代码: SELECT sdd.sd_doc_classification, sdd.sd_title, sdd.sd_desc, sdr.sd_upl
如果我有两个要合并的数据框 Date RollingSTD 01/06/2012 0.16 01/07/2012 0.18 01/08/2012 0.17 01/09/20
我知道可以使用 lein ring war 创建一个 war 文件,但它似乎仍然包含码头依赖项。当我构建 war (并在 tomcat 上部署)时,有没有办法排除码头依赖项? 如果我根本不能做这件事,
维基百科关于封装的文章指出: “封装还通过防止用户将组件的内部数据设置为无效或不一致的状态来保护组件的完整性” 我在一个论坛上开始讨论封装,在那里我问你是否应该始终在 setter 和/或 gette
对于我使用的组合框内的复选框: AOEDComboAssociationName = new Ext.form.ComboBox({ id: 'AOEDComboAssociationName',
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How do I combine LINQ expressions into one? public boo
如何在 rust 中找到排列或组合的数量? 例如C(10,6) = 210 我在标准库中找不到这个函数,也找不到那里的阶乘运算符(这就足够了)。 最佳答案 以@vallentin 的回答为基础,可以进
我有一个复杂的泛型类型用例,已在下面进行了简化 trait A class AB extends A{ val v = 10 } trait X[T<:A]{ def request: T }
如何使用 Hibernate 限制来实现此目的? (((A='X') and (B in('X',Y))) or ((A='Y') and (B='Z'))) 最佳答案 思考有效 Criteria c
我一定会在我的一个项目中使用谷歌图表。我需要的是,显示一个条形图,并且在条形图中,与每个条形相交的线代表另一个值。如果您查看下面的 jsfiddle,您会发现折线图仅与中间的条形图相交,并继续向其他条
只是一个简单的问题,我也很想得到答案,因为我不能百分百理解 Javascript 示例:假设您提示用户输入名称。够简单吧?但是你有一个数组,上面写着一些名字(其中之一就是),基本上就是我到目前为止所说
我试图通过 Haskell 理解函数式编程,但在处理函数组合时遇到了很多麻烦。 其实我有这两个功能: add:: Integer -> Integer -> Integer add x y = x
我正在寻找一种在 Realm 查询中组合 AND 和 OR 的方法。 这是我的课: class Event extends RealmObject { String id; String
例如,我有一个包含 5 个元素的哈希: my_hash = {a: 'qwe', b: 'zcx', c: 'dss', d: 'ccc', e: 'www' } 我的目标是每次循环哈希时都返回,但没
我是Combine 的新手,我想得到一个看似简单的东西。假设我有一个整数集合,例如: let myCollection = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 我想以例如 0
关于“优先组合而不是继承”的问题,我的老师是这样说的: 组合:现有类成为新类的组件 转发:新类中的每个实例方法,在现有类的包含实例上调用相应的方法并返回结果 包装器:新类封装了现有的 这三个概念我不是
我正在尝试将单个整数从 ASCII 值转换为 0 和 1。相关代码如下所示: int num1 = bin.charAt(0); int num2 = bin.charAt(1);
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 7 年前。 我经常看到“嵌套”类中的非静态变
我尝试合并两个数据集(DataFrame),如下所示: D1 = pd.DataFrame({'Village':['Ampil','Ampil','Ampil','Bachey','Bachey',
我是一名优秀的程序员,十分优秀!