JSF文件上载:commandLink不适用于ajax

JSF文件上载:commandLink不适用于ajax,ajax,jsf,file-upload,jsf-2.2,commandlink,Ajax,Jsf,File Upload,Jsf 2.2,Commandlink,对不起我的英语。不适用于 test.xhtml: 我打开test.xhtml并选择一个文件。如果我点击链接上传,那么发送是不起作用的。如果再次单击,链接将无法工作,需要重新加载此页面 如果我打开页面test.xhtml并选择一个文件。我点击空白处进行检查。若我点击链接上传,那个么发送是有效的 有什么问题?请帮助我。我将JSF2.2.4更新为JSF2.2.6。如果我选择了一个文件并点击了链接上传,那么发送就不起作用了。但如果我再次单击,则发送工作正常 我换成了。第一次点击就可以发送了。您标记了[j

对不起我的英语。不适用于

test.xhtml:

我打开test.xhtml并选择一个文件。如果我点击链接上传,那么发送是不起作用的。如果再次单击,链接将无法工作,需要重新加载此页面

如果我打开页面test.xhtml并选择一个文件。我点击空白处进行检查。若我点击链接上传,那个么发送是有效的


有什么问题?请帮助我。

我将JSF2.2.4更新为JSF2.2.6。如果我选择了一个文件并点击了链接上传,那么发送就不起作用了。但如果我再次单击,则发送工作正常


我换成了。第一次点击就可以发送了。

您标记了[jsf-2]。使用JSF2.2进行文件上传,而JSF2.2又要求至少有Servlet3.0和JDK1.6。内部使用此Servlet API 3.0或更高版本上载文件,而不需要第三方库。您会使用什么版本的JSF和Servlet?我使用Servlet3.1.0和JSF2.2.4。
<h:form enctype="multipart/form-data" prependId="false">

    <h:inputFile id="file" label="file" value="#{testMB.file}" required="true">
        <f:ajax event="blur" render="fileMessage"/>
    </h:inputFile>

    <h:message for="file" id="fileMessage" styleClass="message-error"/>

    <h:outputText value="#{testMB.date}" id="date" />

    <h:commandLink action="#{testMB.upload}">
        <f:ajax execute="file" render="fileMessage date" />
        upload
    </h:commandLink>

</h:form>
@ManagedBean(name="testMB")
@ViewScoped
public class TestMB {

    private Part file;

    public String date;

    public void upload() {

        try{
            Thread.sleep(Long.valueOf("5000"));
            this.date = "1111111111111111111";
        }catch(Exception ex){

        }
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public Part getFile() {
        return file;
    }

    public void setFile(Part file) {
        this.file = file;
    }

}