TypeError: Не удается прочитать свойство 'initLazy' из неопределенного? - PullRequest
0 голосов
/ 06 февраля 2020

Я новичок ie в разработке Vaadin. попробуйте настроить проект для Wildfly. Я использую Vaadin 14.1.16 с Wildfly 18 и Java 8. Я получаю сообщение об ошибке при загрузке страницы, как показано ниже.

(TypeError) : Cannot read property 'initLazy' of undefined

Кроме того, textArea не отображается на странице .

comment label находится на правой стороне, в то время как я ожидал быть под select component. Я уже пытался в Google найти что-нибудь, связанное с этой проблемой, но ничего на борту.

Vaadin genius, есть ли у вас какие-либо идеи, почему и как мне это решить?

@Route(value = "maintenance", layout = MainView.class)
@PageTitle("Maintenance Mode Selector")
public class MaintenanceView extends Div implements AfterNavigationObserver {

    @Inject
    private Maintenance maintenance;
    private ComboBox<MaintenanceMode> operationComboBox = new ComboBox<>(MaintenanceMode.NORMAL_OPERATION.getDescription());
    private Select<String> maintenanceSelector = new Select();
    private TextArea commentTextArea = new TextArea();
    private PasswordField passwordField = new PasswordField();
    private Button btnOperation = new Button("Set Operation Mode");

    public MaintenanceView() {
        setId("maintenance-view");

        operationComboBox.setItemLabelGenerator(MaintenanceMode::getDescription);
        operationComboBox.setItems(MaintenanceMode.values());

        maintenanceSelector.setItems("MAINTENANCE OPERATION", "NORMAL OPERATION");
        maintenanceSelector.getStyle().set("width", "40em");
        maintenanceSelector.setPlaceholder("CHOOSE AN OPERATION");

        commentTextArea.getStyle().set("minHeight", "200em");
        commentTextArea.setPlaceholder("Down time is expected to be 30 minute ...");
        commentTextArea.addThemeVariants(TextAreaVariant.LUMO_SMALL);

        btnOperation.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
        btnOperation.addClickListener(buttonClickEvent -> {
            maintenance.setMode("MAINTENANCE OPERATION".equals(maintenanceSelector.getValue()) ? "1" : "0");
            maintenance.setComment(commentTextArea.getValue());
        });

        SplitLayout splitLayout = new SplitLayout();
        splitLayout.setOrientation(SplitLayout.Orientation.HORIZONTAL);
        splitLayout.setSizeFull();

        createEditorLayout(splitLayout);

        add(splitLayout);
    }


    private void createEditorLayout(SplitLayout splitLayout) {
        FormLayout formLayout = new FormLayout();
        formLayout.setResponsiveSteps(
                new FormLayout.ResponsiveStep("40em",2, FormLayout.ResponsiveStep.LabelsPosition.TOP),
                new FormLayout.ResponsiveStep("40em",1, FormLayout.ResponsiveStep.LabelsPosition.TOP),
                new FormLayout.ResponsiveStep("40em",2, FormLayout.ResponsiveStep.LabelsPosition.TOP),
                new FormLayout.ResponsiveStep("40em",1, FormLayout.ResponsiveStep.LabelsPosition.TOP)
                );

        formLayout.addFormItem( operationComboBox, "Combobox Component:");
        formLayout.addFormItem( maintenanceSelector, "Select Component:");
        formLayout.addFormItem( commentTextArea, "Comments:");
        formLayout.addFormItem( passwordField, "Password:");
        formLayout.addFormItem( btnOperation,"");

        formLayout.setColspan(operationComboBox,2);
        formLayout.setColspan(maintenanceSelector,2);
        formLayout.setColspan(commentTextArea,2);
        formLayout.setColspan(passwordField,2);
        formLayout.setColspan(btnOperation,1);

        splitLayout.addToSecondary(formLayout);
    }

    @Override
    public void afterNavigation(AfterNavigationEvent afterNavigationEvent) {

    }
}   

Я немного изменил макет, но теперь получаю эти ошибки.

(TypeError) : Cannot read property 'confirm' of undefined
(TypeError) : Cannot read property 'set' of undefined
(TypeError) : Cannot read property 'updateSize' of undefined

Скриншот страницы. enter image description here

Ответы [ 3 ]

1 голос
/ 06 февраля 2020

(TypeError): Невозможно прочитать свойство 'initLazy' из неопределенного

. javascript window.Vaadin.Flow.comboBoxConnector.initLazy($0); вызывается автоматически, когда к странице прикрепляется ComboBox. Нет необходимости делать это самостоятельно.
Даже если вы говорите, что метод runBeforeClientResponse никогда не используется в вашем коде, удалите его. Поскольку сообщение об ошибке довольно ясно, что эта строка является виновником ошибки.


и Combobox и Textarea не отображаются

Это может потому что вы добавляете одни и те же компоненты несколько раз в окончательный макет с этой строкой: wrapper.add(formLayout); (Эта строка вызывается в общей сложности 3 раза, поэтому вы будете иметь весь formLayout три раза в editorDiv). Добавление одного и того же экземпляра компонента несколько раз никогда не заканчивается хорошо. Измените это на это:

private void createEditorLayout(SplitLayout splitLayout) {
    Div editorDiv = new Div();
    editorDiv.setId("maintenance-layout");

    FormLayout formLayout = new FormLayout();
//        addFormItem(editorDiv, formLayout, operationComboBox, "Operation Mode");
    addFormItem(formLayout, maintenanceSelector, "Operation Mode");
    addFormItem(formLayout, commentTextArea, "Comment");
    addFormItem(formLayout, passwordField, "Password");
    editorDiv.add(formLayout);
    editorDiv.add(btnOperation);

    splitLayout.addToSecondary(editorDiv);
}

private void addFormItem(FormLayout formLayout, AbstractField field, String fieldName) {
    formLayout.addFormItem(field, fieldName);
    field.getElement().getClassList().add("full-width");
}
1 голос
/ 06 февраля 2020

Удалить эту строку:

ui.getPage().executeJs("window.Vaadin.Flow.comboBoxConnector.initLazy($0);", getElement());
0 голосов
/ 10 февраля 2020

После общения с людьми из Ваадина они советуют мне следующее:

Hi! looks like the front-end bundle hasn't updated; 
after adding the combobox to the view, did you restart the app? 
Vaadin needs to run mvn Vaadin:prepare-frontend to include the new component.

И я сделал следующее после того, как эта проблема была неожиданно решена. спасибо всем за ваше любезное воспроизведение перезапустил сервер wildfly.

...