Java 以编程方式配置JSF/ICEFaces输入文件
我的表单上有一个InputFile isntance,它来自Java代码,如下所示:Java 以编程方式配置JSF/ICEFaces输入文件,java,jsf,file-upload,icefaces,Java,Jsf,File Upload,Icefaces,我的表单上有一个InputFile isntance,它来自Java代码,如下所示: FacesContext context = FacesContext.getCurrentInstance(); MethodExpressionActionListener meal = new MethodExpressionActionListener(context.getApplication().getExpressionFactory().createMethodExpression(cont
FacesContext context = FacesContext.getCurrentInstance();
MethodExpressionActionListener meal = new MethodExpressionActionListener(context.getApplication().getExpressionFactory().createMethodExpression(context.getELContext(), "#{mybackingbean.fileUploadEvent}", null,
new Class[] { ActionEvent.class }));
InputFile inputFile = new InputFile();
inputFile.setAutoUpload(false);
inputFile.addActionListener(meal);
//inputFile.setActionExpression(...) - did not work
//inputFile.setAction(..) - did not work
parent.getChildren().add(inputFile);
组件正确呈现,单击上载按钮后,浏览器发送POST请求,但我的支持bean从未收到通知。我也尝试了类似的setActionExpression
和setAction
方法将组件绑定到我的bean,但什么也没发生
你知道如何让我的支持bean知道文件上传的结果吗
已更新
打开更多日志记录,我可以看到文件已上载,这已被记录:
2011-12-07 22:12:54,097 UploadServer DEBUG - UploadServer doLifecycle :: Window00303:j_id117 in form 'Window00303' -> FileInfo: {
percent=100,
preUpload=false,
postUpload=false,
exception=null,
fileName=abcchmvw.INI,
file=[...],
physicalPath=[...],
contentType=application/octet-stream,
size=437,
status=2
}
我反编译了
UploadServer
,但看不出调用actionListener的原因。解决方案是addActionListener
,但最重要的是没有通过调用setId()为组件设置id
再次检查FileUploadServlet是否处于活动状态并正在侦听Balusc,有什么想法吗?:-)