【问题标题】:Pass fields from factory to another class将字段从工厂传递到另一个类
【发布时间】:2012-10-23 09:10:25
【问题描述】:

有一个字段工厂-

    ...
public IncomingFieldFactory(MainView app) {
        hbnContainer = new HbnContainer<Incoming>(Incoming.class, app);
    }
    @Override
    public Field createField(Container container, Object itemId,
            Object propertyId, Component uiContext) {

        final Field f = super.createField(container, itemId, propertyId, uiContext);
        if(f != null) {
            if(f instanceof TextField) {
                TextField tf = (TextField) f;
                tf.setWidth("100%");
            }

            if(propertyId.equals("incomingDate")) {
                ((DateField) f).setResolution(DateField.RESOLUTION_MIN);
                f.setWidth("100%");
            }

            if(propertyId.equals("incomingBalance")) {
                f.setEnabled(false);
            }

            if(propertyId.equals("incomingValue")) {
                incomingValueT = f;
               ...
...

    public Field getIncomingValueT() {
        return incomingValueT;
    }
...

我想将一些字段传递给另一个类来管理它们(启用/禁用),但调用时得到NullPointerException -

...
Field f = incomingFieldFactory.getIncomingValueT();
f.setEnabled(false);
...

我做错了什么?

【问题讨论】:

    标签: jakarta-ee vaadin


    【解决方案1】:

    该字段仅在调用Form.setItemDataSource()Form.addItemProperty() 时创建,因此您需要确保在调用getIncomingValueT() 之后 setItemDataSource()

    另请注意,项目数据源必须包含一个名为“incomingValue”的属性,才能完全创建字段。

    【讨论】:

      猜你喜欢
      • 2019-01-26
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      相关资源
      最近更新 更多