XPages: как использовать элемент управления fileUpload с bean-компонентом? - PullRequest
0 голосов
/ 03 июля 2018

Мы разработали форму и поля, используя поддерживающий боб. Используемая загрузка не будет работать, загрузка страницы останавливается после afterRenderResponse, по некоторым причинам:

<xp:fileUpload value="#{field.fileUpload}" id="fileUpload1">
    <xp:this.attrs>
        <xp:attr name="alias" value="#{form.name}.#{field.fieldName}"></xp:attr>
    </xp:this.attrs>
</xp:fileUpload>

Код в бобе:

private UploadedFile uploadedFile= null;

public FieldData(Field field) {
    this.field = field;
    this.value = field.getFieldValue();
    System.err.print("new FieldData: " + field.getFieldName());
}

public UploadedFile getFileUpload() {
    System.err.print("getFileUpload");
    return uploadedFile;
}

public void setFileUpload(UploadedFile to) {
    System.err.print("setFileUpload " + to);
    this.uploadedFile = to;
}

Ошибка, которую я продолжаю получать:

java.lang.NullPointerException
at com.ibm.xsp.renderkit.html_extended.FileuploadRendererEx.encodeEnd(FileuploadRendererEx.java:371)
at com.ibm.xsp.renderkit.ReadOnlyAdapterRenderer.encodeEnd(ReadOnlyAdapterRenderer.java:180)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:1005)
at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:857)

и многие другие строки.

Другие типы полей ведут себя хорошо, кроме этого. Например, текстовое поле определяется как:

<xp:inputText type="text" value="#{field.fieldValue}" id="inputText1">
    <xp:this.attrs>
        <xp:attr name="required" value="true" rendered="#{javascript:field.isRequired()}"></xp:attr>
        <xp:attr name="alias" value="#{form.name}.#{field.fieldName}"></xp:attr>
    </xp:this.attrs>
</xp:inputText>

У меня есть форма и поле bean-компонентов с необходимыми функциями получения и установки.

Ошибка происходит где-то в XPages, а не в моем коде. Если я закомментирую элемент управления загрузкой, все остальное работает. Может кто-нибудь пролить свет на то, почему я всегда получаю исключение нулевого указателя? Спасибо !!

EDIT добавлены некоторые уточнения, особенно тот факт, что ошибка возникает после шага afterRenderResponse. Я печатаю простую трассировку всех событий в каждом настраиваемом элементе управления, и нет никакой разницы в трассировке, когда я использую элемент управления загрузки или нет, они идентичны, включая последнее событие afterRenderresponse.

1 Ответ

0 голосов
/ 04 июля 2018
/* 370 */     Object localObject1 = getForm(paramUIComponent);
/* 371 */     String str3 = ((UIForm)localObject1).getClientId(paramFacesContext);

JD-Eclipse - очень полезный инструмент, работает с Domino Designer. Отлично работает с отладкой Java , включая точки останова.

Чтобы найти класс, используйте эту подсказку: Ассистирующая банка, содержащая классы Domino / XPages

Мое предположение: элемент управления загрузкой файлов пропускает ссылку на форму. Возможно, компонент находится за пределами формы или отображение формы отключено.

...