将JSF inputText的内容写入一个文件



我需要找出一种将JSF inpuText的内容写入文件的方法。我想建立一个小的UI,这将为用户提供的可能性,以更简单的方式(因此UI)编写一些数学公式,并能够将它们保存到。txt(或类似的东西)文件。我已经试了8-10个小时了,我得到的最好结果是:

<h:inputText value="#{output.inputContent}" id="inputContent"></h:inputText>

And the Bean:

import com.sun.faces.taglib.html_basic.InputTextTag;
import java.awt.event.ActionListener;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.servlet.http.HttpServletRequest;

@ManagedBean(name = "output")
@SessionScoped
public class OutputHandler {
    public String inputContent;
    public String getinputContent() {
        return inputContent;
    }
    public void setinputContent(String inputContent) {
        this.inputContent = inputContent;
    }
    public void writeStream()
    {
        try{
            FileOutputStream fos=new FileOutputStream("outputOne.txt");
           ObjectOutputStream output=new ObjectOutputStream(fos);
          output.writeObject(inputContent);
        }
        catch(Exception ex){
            System.out.println("Exception is: "+ex);
        }       
    }
}

我很确定我所做的大部分都是错误的,所以任何帮助都会很感激,即使它是一些处理类似问题的帖子的方向,所以我可以尝试从那里得到它。我不想被人哄骗,问题是我从来没有使用过JSF(我昨天才开始阅读),所以就像我说的,即使是一些文档的链接也可以帮助我(我从一开始就像疯了一样在谷歌上搜索)或指导我一点,我将非常感激。

对于ObjectOutputStream,您基本上是将String 对象序列化到输出。结果是而不是一个具有string原始值的人类可读文本文件。

您需要使用Writer,其中您将字符串的值传递给。

public void writeStream() throws IOException {
    Writer writer = new FileWriter("outputOne.txt");
    try {
        writer.write(inputContent);
    } finally {
        writer.close();
    }
}

这将以具有字符串原始值的人类可读文本文件结束。


与具体问题无关,请注意在文件IO中使用相对路径是一个非常糟糕的主意。您永远不知道它将在哪里结束,并且在某些环境中工作目录也是不可写的。始终显式地为现有的可写文件夹指定绝对路径:

    Writer writer = new FileWriter("/path/to/outputOne.txt");

在安装服务器并从C:磁盘执行的Windows环境中,上述路径与C:pathtooutputOne.txt基本相同。如果需要,可以将文件夹root配置为VM参数或配置文件设置。假设您传递了-Doutput.location=/path/to VM参数,那么您可以这样使用它:

    File root = new File(System.getProperty("output.location"));
    Writer writer = new FileWriter(new File(root, "outputOne.txt"));

相关内容

  • 没有找到相关文章

最新更新