如何在struts2中获取xml作为响应

时间:2012-04-27 06:56:24

标签: java xml struts2

我试图在strurts2中获取xml类型的javascript响应。 在我的动作类中,我正在创建一个xml,我试图在java脚本中获取它。 我在动作类的代码 -

public String populateXML(){
    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder documentBuilder;

    String root = "menuTree";
    File file = new File(this.getServletRequest().getRealPath("/xml/xmlmenutree2.xml"));

    documentBuilder = documentBuilderFactory.newDocumentBuilder();
    Document document1 = documentBuilder.newDocument();

    Element rootElement = null;
    rootElement = document1.createElement(root);
    document1.appendChild(rootElement);

    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();

    DOMSource source = new DOMSource(document1);
    StreamResult result = new StreamResult(file);

    transformer.transform(source, result);
    return SUCCESS;
}

这将在我的磁盘中创建一个xml文件。在我的JavaScript中,我正在访问它 - 如< - p>

$(document).ready(function() {
    var options = {
    xmlUrl : 'xml/xmlmenutree2.xml' 

};
    $('#xmlMenuTree').xmltree(options);
}

其中xmlMenuTree是我在jsp的div id。 和结构xml -

<action name="fileManagement" class="com.amit.MyAction" method="populateXML">
  <result name="success" type="tiles">filemanagement</result>
</action>

这很好用。但我实际上希望将xml设置为响应而不是将其保存在我的磁盘中。 是否可以在strurts2中进行设置?提前谢谢你。 阿米特

2 个答案:

答案 0 :(得分:0)

将xml放在响应对象中,并通过适当的标签访问视图层......简单。 我想这可能会节省你的时间。

答案 1 :(得分:0)

动作:

  public class MyAction extends ActionSupport {
    //Generate xml like InputStream and put it here
    private InputStream myXmlStream;    

动作定义:

<action name="MyAction" class="mypackage.MyAction">
  <result type="stream">
     <!-- Struts will take InputStream from this variable and send it as response-->
    <param name="myXmlStream">text/plain</param>
    <!-- Set fake filename-->
    <param name="contentDisposition">filename="xmlmenutree2.xml"</param>
  </result>
</action