将JSF inputText的内容写入文件

时间:2011-10-11 12:37:18

标签: java ajax jsf netbeans

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

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

和豆:

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(我昨天开始阅读它)正如我所说,甚至一些文档的链接可以帮助我(我一直在谷歌上搜索自从我开始以来疯狂或引导我一点将非常感激。

1 个答案:

答案 0 :(得分:2)

使用ObjectOutputStream,您的输出基本上是serializing 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:\path\to\outputOne.txt基本相同。如有必要,您可以将文件夹根配置为VM参数或配置文件设置。假设您传递-Doutput.location=/path/to VM参数,那么您可以按如下方式使用它:

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