영어로 죄송합니다. 작동하지 않는다 <h:commandLink>
with <f:ajax>
.JSF 파일 업로드 : commandLink가 아약스와 작동하지 않습니다.
test.xhtml
: TestMB
<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;
}
}
나는 test.xhtml
을 열고 파일을 선택합니다. 링크 "업로드"를 클릭하면 전송이 작동하지 않습니다. 다시 클릭하면 링크가 작동하지 않으며이 페이지를 새로 고침해야합니다.
test.xhtml
페이지를 열고 파일을 선택하십시오. 그리고 "빈 공간"을 클릭하여 <f:ajax event="blur" render="fileMessage"/>
을 확인합니다. 그리고 "업로드"링크를 클릭하면 전송이 작동합니다.
무엇이 문제입니까? 도와주세요.
[jsf-2]라는 태그가 지정되었습니다. ''을 사용하는 파일 업로드에는 JSF 2.2가 필요하며 Servlet 3.0 (최소 JDK 1.6)이 필요합니다. ''는 제 3 자 라이브러리가 없어도이 서블릿 API (3.0 이상)를 내부적으로 사용하여 파일을 업로드합니다. 어떤 버전의 JSF와 Servlet을 사용합니까? –
Tiny
서블릿 3.1.0과 JSF 2.2.4를 사용합니다. –