gpt4 book ai didi

csv - 在 Visualforce 中单击命令按钮时,如何从 apex 页面的字段值生成 csv 文件?

转载 作者:行者123 更新时间:2023-12-02 15:38:24 25 4
gpt4 key购买 nike

我正在开发一个 Visualforce 项目,该项目需要从一组字段值生成 csv 文件。

我使用以下代码生成 csv,我应该单击命令按钮来生成文件,但问题是,当我单击 apex 页面上的“保存”时,会生成一个空文件,而没有获取所需的文件数据。

Visualforce 页面:

 <apex:page controller="test2" contentType="text/csv#{!fileName}.csv"  showHeader="false"    sidebar="false" standardStylesheets="false">
<apex:form >
<apex:outputText value="{!input}" escape="false"/>
<apex:commandButton action="{!exportContent}"/>
</apex:form>
</apex:page>

Controller :

 public with sharing class test2 {
// Controller for ExportData.page,
// which expects to be handed the following POST variables:
// @inputdata(string) data to export (i.e. in CSV format)
// @filename(string) name of the file to export, e.g. 'AccountData'

public transient String input { public get; private set; }
public transient String fileName { public get; private set; }

public void exportContent(){
Map<String,String> params = ApexPages.currentPage().getParameters();

// We expect to be handed POST variables called 'inputdata' and 'filename'
fileName = params.get('filename');
if (fileName == null) fileName = 'Data';

input = params.get('inputdata');
if (input == null) input = 'No data provided.';
}
}

最佳答案

使用 PageReference.getParameters() 在查询字符串中传递的数据量将受到极大限制。方法。请注意,此方法仅限于 URL 参数。 POST 变量需要通过具有非 transient 成员的公共(public) Controller 类来处理,以将数据反序列化到其中。请参阅PageReference.setRedirect(Boolean)

If set to false, the redirect is a server-side forward that preserves the view state if and only if the target page uses the same controller and contains the proper subset of extensions used by the source page.

我整理了一个通过 Visualforce 查看 CSV 的示例 - Prototype CSV viewer for Visualforce 。您也许可以根据您的需要进行调整。

顺便说一句,Salesforce Stackexchange是询问 Salesforce 特定问题的好地方。

关于csv - 在 Visualforce 中单击命令按钮时,如何从 apex 页面的字段值生成 csv 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27143006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com