File upload XPages:如何使用带有bean作为后端的fileUpload控件?

File upload XPages:如何使用带有bean作为后端的fileUpload控件?,file-upload,xpages,javabeans,File Upload,Xpages,Javabeans,我们使用支持bean开发了一个表单和字段。使用的上载无法工作,加载页面在afterRenderResponse后停止,原因如下: <xp:fileUpload value="#{field.fileUpload}" id="fileUpload1"> <xp:this.attrs> <xp:attr name="alias" value="#{form.name}.#{field.fieldName}"></xp:attr>

我们使用支持bean开发了一个表单和字段。使用的上载无法工作,加载页面在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>
我不断得到的错误是:

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表单和字段,以及必要的getter和setter函数

错误发生在XPages中的某个地方,而不是我的代码中。如果我把上传控件注释掉,其他一切都可以正常工作。有人能解释一下为什么我总是得到一个空指针异常吗?谢谢

编辑添加了一些澄清,特别是错误发生在afterRenderResponse步骤之后的事实。我打印每个自定义控件中所有事件的一个简单跟踪,当我使用上载控件与否时,跟踪没有区别,它们是相同的,包括最后一个afterRenderresponse事件

/* 370 */     Object localObject1 = getForm(paramUIComponent);
/* 371 */     String str3 = ((UIForm)localObject1).getClientId(paramFacesContext);
是非常有用的工具,与Domino Designer配合使用。可以完美地使用Java,包括断点

要定位该类,请使用以下提示:


我的猜测是:文件上载控件未引用表单。组件可能在表单外部,或者表单呈现被禁用。

您的bean似乎没有实现呈现程序需要的东西。在stacktrace中查找该方法的来源。可能是的。我忘了提到的是,页面甚至没有第一次加载。堆栈跟踪不包含我的任何源。我再查一下。也许Java中缺少了一些“实现”。有人知道371行的FileUploadRenderEx.Java中发生了什么吗?啊,很好!!当然是一个有用的工具!你当然是对的:我有自己的标签,因为。。。嗯,我忘了确切的原因,但不知为什么我需要它。因此该组件肯定在XPages表单之外。这似乎并不影响我使用的所有其他类型的字段。似乎只有文件上传需要它。因此,搜索正在改变,我现在必须找出如何欺骗文件上传,使其认为存在一个表单,或者我必须(以某种方式)重新启用XPages表单。我现在使用,并且必须进行多次修改才能使其工作。还没有,我还得把文件另存为附件。。。谢谢
/* 370 */     Object localObject1 = getForm(paramUIComponent);
/* 371 */     String str3 = ((UIForm)localObject1).getClientId(paramFacesContext);