Mah*_*leh 7 jsf icefaces jsf-2 icefaces-2
我使用ace:fileEntry组件上传文件,成功上传后,我得到的消息是:
'File Entry' uploaded successfully 'filename'.
Run Code Online (Sandbox Code Playgroud)
我想覆盖此消息并显示其他消息(某种解析上传文件的摘要),任何想法如何?
这是我的代码:
<h:form>
<ace:fileEntry id="fileEntryComp"
label="File Entry"
relativePath="uploaded"
fileEntryListener="#{mybean.uploadFile}"/>
<h:commandButton value="Upload Excel File" />
<h:message for="fileEntryComp" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
fileEntry.getResults().getFiles()为您提供了FileInfo对象的ArrayList.如果只上传一个文件,则可以通过以下方式获取FileInfo:
FileInfo fileInfo = fileEntry.getResults().getFiles().get(0);
Run Code Online (Sandbox Code Playgroud)
您应该通过以下方式调用FileInfo的updateStatus方法来覆盖默认消息:
fileInfo.updateStatus(new FileEntryStatus() {
@Override
public boolean isSuccess() {
return true;
}
@Override
public FacesMessage getFacesMessage(FacesContext facesContext,
UIComponent fileEntry, FileEntryResults.FileInfo fi) {
return new FacesMessage(FacesMessage.SEVERITY_INFO,
"My success message: " + fi.getFileName(),
"My success message: " + fi.getFileName());
}
}, true, true);
Run Code Online (Sandbox Code Playgroud)
您必须创建自己的消息并发送。它将覆盖默认消息。这是一种奇怪的行为,但它会起作用。
public void uploadFile(FileEntryEvent e) {
FileEntry fe = (FileEntry)e.getComponent();
FacesContext ctx = FacesContext.getCurrentInstance();
FacesMessage msg = new FacesMessage();
msg.setServity(FacesMessage.SERVITY_INFO);
msg.setSummary("mysummary");
msg.setDetail("mydetail");
ctx.addMessage(fe.getClientId(),msg);
}
Run Code Online (Sandbox Code Playgroud)
您可以查看展示:http://comp-suite.icefaces.org/comp-suite/showcase.jsf ?grp=aceMenu&exp=fileEntry
归档时间: |
|
查看次数: |
3423 次 |
最近记录: |