我将 JSF 2.1 与 JSP 文件一起使用。我尝试将 JSF 2.1 与 Facelet 文件一起使用,但没有让 Tomahawk(MyFaces 扩展)工作。
我正在尝试使用 Tomahawk 上传文件。我的表格如下所示:
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>FILE UPLOAD</title>
</head>
<body>
<fieldset>
<h:form enctype="multipart/form-data">
<t:inputFileUpload value="#{fileUploadBean.upFile}"
size="25"
required="true" /><br/>
<h:commandButton value="Validar" action="#{fileUploadBean.upload}" />
</h:form>
</fieldset>
</body>
</html>
</f:view>
我的bean是(因为我使用的是JSF 2.1,所以我不需要使用faces-config.xml
并且我使用注释):
import java.io.IOException;
import java.io.InputStream;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.apache.myfaces.custom.fileupload.UploadedFile;
/**
*
* @author federico.martinez
*/
@ManagedBean
@RequestScoped
public class FileUploadBean {
private UploadedFile upFile;
public UploadedFile getUpFile(){
return upFile;
}
public void setUpFile(UploadedFile upFile){
this.upFile = upFile;
}
public String upload(){
InputStream is = null;
try {
is = upFile.getInputStream();
long size = upFile.getSize();
byte[] buffer = new byte[(int)size];
is.read(buffer,0,(int)size);
is.close();
System.out.println("File Upload Successful.");
return "processing-file";
} catch (IOException ex) {
Logger.getLogger(FileUploadBean.class.getName()).log(Level.SEVERE, null, ex);
return "error-lf";
} finally {
try {
is.close();
} catch (IOException ex) {
Logger.getLogger(FileUploadBean.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
就是这样,但最后的问题是当我点击 h:commandButton 时,它什么也没做。似乎从我的 bean 中“上传”的方法不起作用或其他什么。我错过了什么?