JSF文件上传:commandLink无法使用ajax

时间:2015-01-18 17:05:27

标签: ajax jsf file-upload jsf-2.2 commandlink

抱歉我的英文。 <h:commandLink><f:ajax>不起作用。

test.xhtml

<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>

班级TestMB

@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;
    }

}

我打开test.xhtml并选择一个文件。如果我点击链接&#34;上传&#34;,则发送无效。如果再次单击,链接将无法正常工作,需要重新加载此页面。

如果我打开页面test.xhtml并选择一个文件。然后我点击&#34;空白空间&#34;检查<f:ajax event="blur" render="fileMessage"/>。如果我点击链接&#34;上传&#34;,那么发送正在运行。

有什么问题?请帮帮我。

1 个答案:

答案 0 :(得分:0)

我将JSF 2.2.4更新为JSF 2.2.6。如果我选择一个文件并单击链接“上传”,则发送不起作用。但如果我再次点击,那么发送工作正常。

我将<f:ajax event="blur" render="fileMessage"/>更改为<f:ajax event="change" render="fileMessage"/>。发送正在第一次点击。