Struts 2とExtの統合開発


最近ずっと1つのStrutsとExtの整合の1つの比較的に規範的なやり方を探したくて、個人は必然的にStrutsのjsonを使うと思って、1晩して、大衆の規範に合っているかどうか分からないで、配置は以下の通りです:
Struts 2は2.1.7からjsonを統合し、struts 2-json-plugin-2というstrtus 2のlibパッケージからシートを見つけることができる.x.x.x.jar
json-pluginをプロジェクトのlibに入れると、開発を開始できます.
Action:
package com.bjsoft.oa.action.system;

import nl.captcha.Captcha;

import org.apache.commons.lang.xwork.StringUtils;

import com.bjsoft.oa.model.User;
import com.bjsoft.oa.service.UserService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
	private static final long serialVersionUID = 2578893349737621315L;
	private UserService userService;
	private User user;
	private String simpleCaptcha;

	private boolean success;
	private String msg;

	@Override
	public String execute() throws Exception {
		success = false;
		msg = "";
		Captcha _simpleCaptcha = (Captcha) ActionContext.getContext()
				.getSession().get("simpleCaptcha");
		if (_simpleCaptcha.isCorrect(simpleCaptcha)) {

			String _userName = user.getUsername();
			String _password = user.getPassword();
			if (!StringUtils.isEmpty(_userName)
					&& !StringUtils.isEmpty(_password)) {
				User u = this.userService.getUserByName(_userName);
				if(u != null){
					if (StringUtils.equals(u.getPassword(), _password)) {
						success = true;
					} else {
						msg = "    !";
					}
				}else{
					msg = "      ";
				}
				
			} else {
				msg = StringUtils.isEmpty(_userName) ? "       " : "      ";
			}
		} else {
			msg = "     !";
		}
		return super.execute();
	}

	public UserService getUserService() {
		return userService;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public String getSimpleCaptcha() {
		return simpleCaptcha;
	}

	public void setSimpleCaptcha(String simpleCaptcha) {
		this.simpleCaptcha = simpleCaptcha;
	}

	public boolean isSuccess() {
		return success;
	}

	public void setSuccess(boolean success) {
		this.success = success;
	}

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

}

strtus.xml
<struts>
	<package name="login" namespace="/" extends="json-default">
		<action name="login" class="com.bjsoft.oa.action.system.LoginAction">
			<result type="json">
				<param name="includeProperties">
					success,msg
				</param>
			</result>
		</action>
	</package>
</struts>

ここでpackageは必ずjson-defaultを継承し、result typeもjsonフォーマットであると同時に、パラメータのないjson resultはactionのすべての局所変数をjsonフォーマットの文字列に戻し、不要な浪費をもたらすようで、2つの解決策があります.1つは上記の構成です.strutsにどの変数を含めるべきかを教え、もう1つはstrutsにどの変数を含めるべきではないかを教えます.
<!-- Result fragment -->
<result type="json">
  <param name="excludeProperties">
    login.password,
    studentList.*\.sin
  </param>
</result>

これでいいです.