0

我尝试使用 JSF 2.2 创建上传文件表单。在这种形式中,我有 bankCode 输入框,当失去焦点时将 ajax 到服务器。而且这个表格还包含输入文件框用。所以我必须将 enctype="multipart/form-data" 属性放到 h:form 标记以上传文件。

每次我将 enctype 放入表单时 - ajax 都会在 Chrome 的调试器中显示错误消息。

未捕获的类型错误:无法读取 null
jsf.js.htm:359的属性“长度”

示例代码

<h:form id="dialogForm" prependId="false" enctype="multipart/form-data">
        <h:commandLink action="#{bankController.initCreate()}" class="btn add" style="margin: 10px 0 20px 20px;">
            <f:ajax immediate="true" execute="@this" render=":dialogForm"/>
            <span>Add new bank</span>
        </h:commandLink>
        <table class="dialogTable" style="margin: 10px 0 20px 20px;">
            <colgroup>
                <col width="30%"/>
                <col width="70%"/>
            </colgroup>
            <tr>
                <td class="label">
                    <label for="abbreviation">Bank's code<span class="required">*</span></label>
                </td>
                <td>                                           
                    <h:panelGroup id="codeBox" layout="block" class="codeBox">
                        <h:inputText id="code" value="#{bankController.curBank.code}" maxlength="10" class="input code #{bankController.isExistCode?'error':''}"
                                     onblur="return validTextInput('code',2);">
                        <f:validateLength minimum="2" maximum="10"/>
                            <f:ajax execute="@this" event="blur" listener="#{bankController.existCode()}" onevent="function(e){showValidateIcon(e, 'code');}" render="codeBox"/>
                        </h:inputText>
                        <span class="append2">
                            <img id="codeXLoad" src="#{cdnLocator.officeUrl}/img/load16.gif" title="On process, please wait" width="16" height="16" style="margin-top: 2px; display: none;"/>
                            <img id="codeXWarn" src="#{cdnLocator.officeUrl}/css/images/error_msg_icon.gif" title="Not allowed" width="16" height="16" style="margin-top: 2px; #{bankController.isExistCode?'':'display: none;'}"/>
                            <img id="codeXAvai" src="#{cdnLocator.officeUrl}/css/images/success_msg_icon.gif" title="Allowed" width="16" height="16" style="margin-top: 2px; #{bankController.isExistCode?'display: none;':''}"/>
                        </span>
                    </h:panelGroup>  
                </td>
            </tr>
            <tr>
                <td class="label">
                    <label for="icon">Bank icon file*</label>
                </td>
                <td>
                    <h:inputFile id="bankIconFile" value="#{bankController.bankIconFile}"/>
                </td>
            </tr>
        </table>
    </h:form>

我该如何解决这个错误。

4

2 回答 2

0

谢谢您的回复。我发现这是 JSF 2.2 M10 到 M12 的错误。我更改为 JSF 2.2 M9,它运行良好。

所以我将使用 M9 直到 JSF 2.2 发布。

于 2013-04-06T02:14:16.170 回答
0

我提出了Mojarra的一个错误,我认为这也与您的问题有关。

堆栈溢出问题

PS。Jira 自 5 月 14 日以来一直处于休眠状态,因此投票可能会加快解决速度

于 2013-07-24T16:08:02.750 回答