【发布时间】:2014-11-13 15:12:50
【问题描述】:
我是 Struts2 的新手,我正在尝试检索我在动作类中设置的属性。
LoginAction.java:
public class LoginAction extends ActionSupport implements SessionAware {
private static final long serialVersionUID = 1L;
private Map<String, Object> session;
// field variables
@Override
public String execute() {
UserManager um = new UserManager();
String registeredPassword = um.getCurrentUserDetail("user_password", getUserId());
if(getUserPassword().equals(registeredPassword)) {
String currentUserId = um.getCurrentUserDetail("user_id", userId);
int currentUserType = um.getCurrentUserType(userId);
session.put("currentUserId", (String) currentUserId);
session.put("currentUserType", (Integer) currentUserType);
System.out.println("You have successfully logged in!");
return SUCCESS;
}
System.out.println("Your login has failed!");
return ERROR;
}
@Override
public void setSession(Map<String, Object> session) {
this.session = session;
}
// getters and setters
}
struts.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="login" class="com.mypackage.model.LoginAction">
<result name="success">/index.jsp</result>
<result name="error">/login.jsp</result>
</action>
</package>
</struts>
index.jsp:
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page import="com.mypackage.model.LoginAction" %>
<head>
<%
int type = 0;
if(session.containsKey("currentUserType")) {
type = (Integer) session.get("currentUserType");
}
%>
</head>
但是,containsKey() 和 get() 方法返回未定义的 session。如何获取 Struts2 中会话中的属性?
【问题讨论】:
-
在标签中使用 'value' 属性而不是
key -
如果他使用value,那么他也需要指定name。键=标签+值+名称