Jsf 如何覆盖ICEfaces中的默认文件上载h:message
我正在使用ace:fileEntry组件上载文件 成功上传后,我收到一条信息:Jsf 如何覆盖ICEfaces中的默认文件上载h:message,jsf,jsf-2,icefaces,icefaces-2,Jsf,Jsf 2,Icefaces,Icefaces 2,我正在使用ace:fileEntry组件上载文件 成功上传后,我收到一条信息: 'File Entry' uploaded successfully 'filename'. 我想覆盖这个消息并显示其他消息(某种用于解析上传文件的摘要),你知道怎么做吗 这是我的密码: <h:form> <ace:fileEntry id="fileEntryComp" label="File Entry" relati
'File Entry' uploaded successfully 'filename'.
我想覆盖这个消息并显示其他消息(某种用于解析上传文件的摘要),你知道怎么做吗
这是我的密码:
<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>
您必须创建自己的消息并发送它。它将覆盖默认消息。这是一种奇怪的行为,但它会起作用
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);
}
您可以查看showcase:您可以覆盖icefaces消息 在icefaces源程序包中可以找到默认的消息包(只是为了知道要发送的消息):
icefaces3/ace/component/src/org/icefaces/ace/resources/messages.properties
其中:
org.icefaces.ace.component.fileEntry.SUCCESS = ''{0}'' has successfully uploaded ''{1}''
org.icefaces.ace.component.fileEntry.SUCCESS_detail = ''{0}'' has successfully uploaded ''{1}''
这些是我在application.properties文件中的行:
org.icefaces.ace.component.fileEntry.SUCCESS = File ''{1}'' caricato correttamente
org.icefaces.ace.component.fileEntry.SUCCESS_detail = File ''{1}'' caricato correttamente
确保在faces-config.xml中定义了application.properties,并且应用程序可以看到这些属性:
<application>
<message-bundle>application</message-bundle>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
</application>
应用
EN
这可以通过所有Icefaces默认消息完成…fileEntry.getResults().getFiles()提供FileInfo对象的ArrayList。
如果只上载一个文件,则可以通过以下方式获取文件信息:
FileInfo fileInfo = fileEntry.getResults().getFiles().get(0);
您应该通过以下方式调用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);
如果我正在使用FileEntryCallBack实例(如此处所示):我希望在结束消息中添加一条摘要消息?我们尚未使用该消息,因此我无法确定。啊,在这里的完整教程中找到了它:嗯,有一种情况,我在按钮旁边显示了新消息,它会继续显示旧的默认消息,但不在表单中!!!!IIRC我们使用了ice:form和ice:messages,但我不确定这是否有区别。