liguofeng29’s blog

個人勉強用ブログだっす。

Struts2 - ajax - streamタイプ利用

struts.xml

略・・・
<action name="register" class="action.RegisterAction">
    <!-- タイプがstream -->
    <result type="stream">
        <param name="contentType">text/html</param>
        <!-- InputStream -->
        <param name="inputName">inputStream</param>
    </result>
</action>

RegisterAction.java

略・・・
public String execute() throws Exception {
    if ("1111".equals(name) && "1111".equals(pass)) {
        inputStream = new ByteArrayInputStream("登録成功しました。".getBytes("UTF-8"));
    } else {
        inputStream = new ByteArrayInputStream("登録失敗しました。".getBytes("UTF-8"));
    }
        return SUCCESS;
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<head>
<title>stream ajax</title>
<script src="${pageContext.request.contextPath}/jquery-1.11.1.js"
    type="text/javascript"></script>
</head>

<body>
    <s:form action="register" id="regiserForm">
        <s:textfield name="name" label="ユーザ名" />
        <s:textfield name="pass" label="パスワード" />
        <tr>
            <td colspan="2"><input id="registerBtn" type="button" value="登録" />
            </td>
        </tr>
    </s:form>

    <div id="show" style="display: none;"></div>

    <script type="text/javascript">
       $("#registerBtn").click(
               function() {
                   $("#show").hide();
                   // form内容送信
                   $.get("register", $("#regiserForm").serializeArray(),
                   // 受信FN
                   function(data, statusText) {
                       $("#show")
                       .height(80)
                       .width(240)
                       .css("border","1px solid black")
                       .css("border-radius", "10px")
                       .css("background-color", "#efef99")
                       .css("color", "#ff0000").css("padding","20px")
                       .empty();
                       $("#show").append("登録結果" + data + "<br />");
                       $("#show").show(2000);
                   },
                   // responseはhtml
                   "html");
               });
   </script>

</body>
</html>

f:id:liguofeng29:20160316234618g:plain