如何使用Struts从Action到JSP获取一个简单的String?

时间:2017-01-26 11:28:10

标签: java jquery ajax jsp struts2

我有这个问题:我需要从Action获取一些简单数据并发送回JSP(已经加载),因此我必须使用jQuery $.ajax方法管理恢复该数据的操作。所以这是我的代码:

MyAction.java

private String employee;
private InputStream inputStreamEmployee;
//these with getter/setter

public String someData() throws Exception{
        employee= "John Doe";
        inputStreamEmployee = new ByteArrayInputStream(
                  employee.getBytes(StandardCharsets.UTF_8)); 

        return "SUCCESS";
    }

struts.xml中

<action name="getSomeData" method="someData" class="MyAction">
    <result name="success" type="stream">
        <param name="contentType">text/html</param>
        <param name="inputName">inputStreamEmployee</param>
    </result>
</action>

data.js

function getData(){
    $.ajax({
        type: 'GET',
        url: 'getSomeData',
        dataType: 'text',
        async: true,
        success: function (data) {
            alert(data);
        },
        error: function (data) {
            alert('no data!!');
        }
    });

我检查了这个resource,但我需要javascript部分。所以我调试并检查了开发。 javascript方法在java中调用操作,操作返回success,但data中的function(data)没有正确获取InputStream,它只是获取整个html网页源,如图所示在图像中: enter image description here

我做错了什么?提前谢谢。

1 个答案:

答案 0 :(得分:0)

忘记javascript调用,您的问题是请求www.yourdomain.com/getSomeData未返回包含文字John Doe的网页。

为什么使用inputStream?如果您使用JSP作为模板系统,那么简单的解决方案就是

MyAction.java

private String employee;

public String someData() throws Exception{
    employee= "John Doe";
    return "SUCCESS";
}


public String getEmployee(){
    return employee;
}

stuts.xml

<action name="getSomeData" method="someData" class="MyAction">
    <result>/WEB-INF/.../templates/some_data.jsp</result>
</action>

some_data.jsp

<%= employee%>