我有一个用于创建案例的VisualForce,这个VisualForce将嵌入到一个站点上,所以它是基于HTML构建的VisualForce,而在HTML内部我放了以下内容:
<apex:page applyHtmlTag="false" showHeader="false" sidebar="false" docType="" Controller="MyController">
<html>
<body>
<!--
HTML PAGE
-->
<div id="FileUpload" class="row">
<apex:form enctype="multipart/form-data" id="FileUploadForm">
<apex:pageMessages id="TheMessage" />
<apex:pageBlock>
<apex:pageBlockSection showHeader="false" columns="2" id="block1">
<apex:pageBlockSectionItem >
<apex:outputLabel value="File" for="file"/>
<apex:inputFile value="{!document.body}" filename="{!strFileName}" id="file"/>
</apex:pageBlockSectionItem>
<apex:commandButton action="{!cargarArchivo}" value="Cargar Archivo" reRender="TheMessage"/>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</div>
</body>
</html>
</apex:page>
控制器是:
public String strFileName {get; set;}
public Document document {
get {
if (document == null)
document = new Document();
return document;
}
set;
}
public void cargarArchivo() {
document.AuthorId = UserInfo.getUserId();
document.FolderId = '00l29000000L2uH';
document.name = strFileName;
document.description = strFileName;
document.keywords = strFileName;
try {
insert document;
} catch (Exception e) {
ApexPages.addMessage(new ApexPages.message(ApexPages.severity.ERROR,'Error cargando el archivo, por favor intente nuevamente'));
return;
} finally {
document.body = null; // clears the viewstate
document = new Document();
}
ApexPages.addMessage(new ApexPages.message(ApexPages.severity.INFO,'Archivo cargado con éxito.'));
}
到目前为止,一切都运行良好,但是当你将reRender添加到commandButton时,就像这样:
<apex:commandButton action="{!cargarArchivo}" value="Cargar Archivo" reRender="TheMessage"/>
我收到以下错误:
3_3_3.Finalorg.ajax4jsf.javascript.AjaxScript:178
Uncaught TypeError: actionUrl.indexOf is not a function
at A4J.Query.getActionUrl (3_3_3.Finalorg.ajax4jsf.javascript.AjaxScript:178)
at A4J.AJAX.XMLHttpRequest.send (3_3_3.Finalorg.ajax4jsf.javascript.AjaxScript:67)
at Object.A4J.AJAX.SubmitQuery (3_3_3.Finalorg.ajax4jsf.javascript.AjaxScript:125)
at Object.A4J.AJAX.Submit (3_3_3.Finalorg.ajax4jsf.javascript.AjaxScript:126)
at HTMLInputElement.onclick (RF2_CrearCasoWeb_pag?negocio=WEB_GIE:559)
答案 0 :(得分:0)
您可以使用重新渲染,也可以使用inputfile标记。它们不能一起使用,因为错误说明了。
您的页面消息会在没有提及的情况下自动重新呈现。所以你不用担心。
作为最佳做法,您可以使用iframe标记,该标记将独立的HTML文档嵌入到当前文档中。