相关疑难解决方法(0)

用JSF下载文件?

哪个是使用JSF下载文件的正确方法?只是放一个文件链接?在那种情况下我如何获得文件URL?

我见过一个使用BufferedInputStream的例子:

http://www.winstonprakash.com/articles/jsf/file_download_link.htm

有什么区别?

谢谢

java jsf download

15
推荐指数
2
解决办法
5万
查看次数

从JSF应用程序的任何Web浏览器强制保存为对话框

我已经创建了一个JSF应用程序,我想在一个页面中嵌入一个链接,当点击它时会导致支持bean编组一些xm​​l并强制打开另存为下载对话框,以便用户可以选择一个位置保存文件.我已经编写了JAXB代码.

这是怎么做到的?

谢谢

java jsf

11
推荐指数
1
解决办法
2万
查看次数

有条件地提供文件下载或显示导出验证错误消息

我一直在研究CRUD应用程序,我需要将数据从数据库导出到csv文件.为了导出,我必须以下面的代码所示的方式禁用ajax:

<p:commandButton value="Export" ajax="false" action="myController.export"/>
Run Code Online (Sandbox Code Playgroud)

在调用的方法中,我创建文件并通过OmniFaces实用程序方法下载它:

Faces.sendFile(file, true);
Run Code Online (Sandbox Code Playgroud)

使用相同的方法,我检查是否确实存在任何数据,如果没有任何数据,则会显示警告对话框:

RequestContext.getCurrentInstance().showMessageInDialog(new FacesMessage(FacesMessage.SEVERITY_WARN, "Warning!", "No available data for export."));
Run Code Online (Sandbox Code Playgroud)

现在,虽然所有这些都按预期工作,但问题是因为禁用了ajax,所以无法动态显示对话框,并重新加载页面.如果启用了ajax,则会动态显示对话框,但不会启动文件下载.

我一直在努力解决这个问题,使用Monitor下载,或强制点击第二个按钮,但到目前为止,我还没有在这个问题上取得任何进展.

是否有任何普遍接受的方式来解决像这样的问题?

validation ajax jsf download primefaces

7
推荐指数
1
解决办法
1165
查看次数

如何将rich:dataTable导出为ex​​cel

我想导出a <rich:dataTable><rich:extendedDataTable>excel 的内容.

  • 我看到PrimeFaces有"出口商特色" http://www.primefaces.org/showcase/ui/exporter.jsf

  • 我希望只能使用PrimeFaces做类似的事情,但是使用richFaces(版本3.3.3)......(我想在未来的某个时候迁移到RichFaces 4但是我坚持使用3.3 .3现在)

  • 我已经读过可以使用http://poi.apache.org/构建自己的, 但我不知道从哪里开始实现这样的东西......

任何关于如何最好地预先形成所需出口和示例的想法将不胜感激!

java excel jsf richfaces apache-poi

6
推荐指数
1
解决办法
7784
查看次数

JSF中的响应对象

我觉得这将是一个最短的答案将是一个问题:"这就是为什么JSF取代了JSP",但我会继续问问题.

问题:我想知道:我可以获取JSF页面的Response对象(如果有的话)?

为何奇怪?:我发现自己处于需要从JSF页面传递到JSP的情况,所以我想为什么不response.sendRedirect从一个从JSF页面调用的bean 重定向(with )然后......你可以看到它的标题.

我觉得这样可以用更干净的方式完成,但看不出怎么样!

编辑:在它上面,我还会询问哪种方式最适合重定向到JSF页面.

提前感谢您的建议.

jsf jsp response.redirect

6
推荐指数
1
解决办法
1万
查看次数

如何流式传输文件并显示JSF面部消息?

我们正在按照SO问题中详细说明的程序如何从JSF支持bean提供文件下载,将二进制文件流式传输给我们的用户

通常,工作流程按预期工作,但在生成导出文件期间,可能会发生可恢复的错误,我们希望将这些错误显示给用户.在这种情况下,仍然会生成文件本身.所以我们希望继续导出显示面部消息.

只是强调这一点:是的,数据有些不合适,但我们的用户希望导出继续并接收有缺陷的文件.然后他们想查看该文件,联系他们的供应商并向他发送有关该漏洞的消息.

所以无论如何我都需要导出才能完成.

但它并没有像我们想要的那样成功.我创建了一个简化的例子来说明我们的方法.

作为替代方案,我们正在考虑一个Bean,它将保存消息并在导出后显示它们.但是可能有一种方法可以使用JSF内置机制来实现这一目标.

调节器

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import org.apache.tomcat.util.http.fileupload.util.Streams;

@ManagedBean
@RequestScoped
public class ExportController {

    public void export() {
        FacesContext fc = FacesContext.getCurrentInstance();
        ExternalContext ec = fc.getExternalContext();

        byte[] exportContent = "Hy Buddys, thanks for the help!".getBytes();
        // here something bad happens that the user should know about
        // but this message does not go out to the …
Run Code Online (Sandbox Code Playgroud)

jsf message download jsf-2

6
推荐指数
1
解决办法
2万
查看次数

使用JSF下载CSV文件

我不知道如何下载CSV文件.CSV将在运行时生成.我是否需要先将文件保存在tomcat WEB-INF目录中?我正在使用JSF 1.2.

顺便说一下,这种任务最受欢迎的JSF组件是什么?


编辑(05.05.2012 - 15:53)

我尝试了BalusC他的第一个链接中说明的解决方案,但如果我点击我的commandButton,该文件的内容将显示在网页上.也许这有问题mimetype

XHTML文件:

<a4j:form>
    <a4j:commandButton action="#{surveyEvaluationBean.doDataExport}" value="#{msg.srvExportButton}" />
</a4j:form>
Run Code Online (Sandbox Code Playgroud)

主豆:

    public String doDataExport() {

    try {
        export.downloadFile();  
    } catch (SurveyException e) {
        hasErrors = true;
    }
    return "";
}
Run Code Online (Sandbox Code Playgroud)

出口豆类:

public void downloadFile() throws SurveyException {

    try {

        String filename = "analysis.csv";

        FacesContext fc = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse) fc.getExternalContext().getResponse();

        response.reset();
        response.setContentType("text/comma-separated-values");
        response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");

        OutputStream output = response.getOutputStream();

        // writing just sample …
Run Code Online (Sandbox Code Playgroud)

java csv jsf download

5
推荐指数
1
解决办法
2万
查看次数

使用<h:form>将HTTP POST请求发送到外部站点

我想使用<h:form>组件向另一台服务器发送HTTP post请求.

我可以使用HTML <form>组件向外部站点发送POST请求,但<h:form>组件不支持此操作.

<form action="http://www.test.ge/get" method="post">
    <input type="text" name="name" value="test"/>
    <input type="submit" value="CALL"/>
</form>
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这一目标<h:form>

jsf primefaces

5
推荐指数
1
解决办法
7052
查看次数

将OutputStream发送到浏览器并让浏览器保存它

我想从Rich Faces数据表中导出数据我已经从数据表中的数据创建了outputStream.现在想要将此OutputStream发送到浏览器并让它保存.我怎样才能做到这一点?

FileOutputStream stream = new FileOutputStream(new File(PATH));

OutputStream out = myMthodToCreateOutPutStream();

现在如何将此保存out到浏览器.

jsf richfaces export-to-excel

4
推荐指数
1
解决办法
2万
查看次数

p:调用fileDownload bean方法但不显示文件下载

您好我正在使用JSF和Primefaces上传和下载相同的文件操作.

我正在使用来自不同论坛和博客的技术(BelusC的博客和Primefaces Showcase).

此操作的主要思想是让用户上传文件并为上传的文件生成下载链接,以便他可以在提交前下载并查看.

这是我的代码:

的index.xhtml

<h:form>
    <p:fileUpload showButtons="false" label="Attach Refrral" 
        auto="true" fileUploadListener="#{fileBean.uploadListener}"/>
</h:form>

<h:form >
   <p:commandLink>
      See Uploaded File
      <p:fileDownload value="#{fileBean.refrralFile}"/>
   </p:commandLink>
</h:form>
Run Code Online (Sandbox Code Playgroud)

FileBean.java

private StreamedContent refrralFile;


    public void uploadListener(FileUploadEvent evt)throws Exception
    {
        UploadedFile fx = evt.getFile();

        File mainDir = new File("C:/","fileStorage");
        if(!mainDir.exists())
        {
            mainDir.mkdir();
        }
        File subDir = new File(mainDir,"AttachedRefrrals");
        if(!subDir.exists())
        {
            subDir.mkdir();
        }
        String fileName = fx.getFileName();

        File f = new File(subDir,fileName);
        FileOutputStream fos = new FileOutputStream(f);
        IOUtils.copy(fx.getInputstream(), fos);

        InputStream is = ((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getResourceAsStream(f.getAbsolutePath());
        refrralFile  = new DefaultStreamedContent(is, …
Run Code Online (Sandbox Code Playgroud)

jsf download primefaces

4
推荐指数
1
解决办法
6570
查看次数