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:
strtus.xml
ここでpackageは必ずjson-defaultを継承し、result typeもjsonフォーマットであると同時に、パラメータのないjson resultはactionのすべての局所変数をjsonフォーマットの文字列に戻し、不要な浪費をもたらすようで、2つの解決策があります.1つは上記の構成です.strutsにどの変数を含めるべきかを教え、もう1つはstrutsにどの変数を含めるべきではないかを教えます.
これでいいです.
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>
これでいいです.