2

我有一个 JQuery - Struts 2 应用程序。我通过 $.load() 向 struts 操作发送请求,我得到一个 HTML 内容,一切都很好。问题是当我需要通过单个XMLHTTPRequest获取 HTML 内容以及显示状态的整数时。

实际上,在我的例子中,HTML 内容是服务器进程的新日志,整数值是该进程的状态。

如何将整数连同内容一起发回?

这是动作配置:

<action name="getProcessUpdate" class="ProcessAction" >
    <result type="stream">
        <param name="contentType">text/html</param>
        <param name="inputName">newLogs</param>
    </result>
</action>

这是在动作类中:

public class ProcessAction extends ActionSupport {

    private InputStream newLogStream;

    public InputStream getNewLogs() {
        return newLogStream;
    }

    public String execute() {

        newLogStream = new ByteArrayInputStream(getNewLogHTML().getBytes());

        return SUCCESS;
    }

    private String getNewLogHTML(){
        String newLong = "";

        newLong = "Some new Longs";

        return newLong;
    }
}

这是我的 jquery 调用:

function getNewLogs(){
    $( "#log" ).load('getProcessUpdate');
}
4

2 回答 2

1

使用普通结果(而不是 Stream),并返回一个 JSP 片段,其中包含您想要的所有 Action 对象,然后使用$.load().

请记住使用escape="false".

Struts.xml

<action name="getProcessUpdate" class="ProcessAction" >
    <result>snippet.jsp</result>
</action>

行动

public class ProcessAction extends ActionSupport{
    private String newLog;
    private Integer threadState;

    /* Getters */

    public String execute() {
        threadState = 1337;     
        newLog = getNewLogHTML();
        return SUCCESS;
    }
}

主 JSP

<script>
    $(document).ready(function getNewLogs(){
        $( "#container" ).load('getProcessUpdate');
    });
</script>

<div id="container"></div>

片段.jsp

<%@taglib prefix="s" uri="/struts-tags" %>

<h3>Log file</h3>
<div id="log">
    <s:property value="newLog" escape="false" />
</div>

<h3>Thread state</h3>
<div id="threadState">
    <s:property value="threadState" />
</div>
于 2013-07-10T12:39:59.723 回答
0

好的,我最终选择了我的旧 inputStream 方法和@Andrea 发布的答案的组合:我将返回一段 HTML,包括我的日志和我的状态,然后在我的 java 脚本代码中,我将通过帮助将它们分开查询。

无论如何,我会接受@Andrea 的回答,我猜是因为它很鼓舞人心。

谢谢。

于 2013-07-13T11:56:08.417 回答