2011-10-11 121 views
3

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

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

和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合作过(我昨天开始阅读它),所以我说,甚至一些链接到一些文件,可以帮助我(我一直在使用谷歌搜索疯狂,因为我开始)或引导我一点将不胜感激。

+0

这是不是写内容到文件?当问问题时,如果某些东西不起作用,说出什么不起作用会很有帮助。如果它是一个web应用程序,并且该用户不在服务器本地,则他们也需要下载该文件。 –

回答

2

With ObjectOutputStream你基本上是serializing a 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")); 
+0

谢谢你的回答,这正是我所寻找的。 – DVM