我有一个表单,在提交时将数据从其字段存储到数据库。 struts-config中的操作向前映射到数据插入数据库的成功/失败的同一页面。我想在成功完成后提醒用户,因此我在表单的action类的方法中设置了一个session属性(即成功/失败)。然后,一旦再次访问jsp页面,我就会得到并打印出这个会话属性。
到目前为止,我已经在Action Class中完成了这个:
public static void setJavaScriptNotification(HttpServletRequest request, String notificationText) {
HttpSession session = request.getSession(true);
session.setAttribute("notification_javascript", notificationText);
}
在包含我的表单的jsp文件中:
<% String notificationJavaScript = (String) request.getSession().getAttribute("notification_javascript");
pageContext.setAttribute("notification_javascript", notificationJavaScript);
request.getSession().removeAttribute("notification_javascript"); %>
<html>
<head>
<logic:present name="notification_javascript">
<script type="text/javascript" language="JavaScript">
function showAlerts() {
alert("<bean:write name="notification_javascript"/>");
}
</script>
</logic:present>
</head>
<body onload="doPreOnload(); showAlerts();">
当我在jsp中打印出会话属性时,我找不到notification_javascript属性。我是HTTP的新手,所以我可能在那里做错了。
答案 0 :(得分:2)
在 setJavaScriptNotification()中的会话中设置 notification_javascript 后,请求会转发到jsp,其中 notification_javascript 被访问。
如果是,那么 session.getAttribute(“notification_javascript”)将完成这项工作。
request.setAttribute()vs session.setAttribute()
request.setAttribute()将使密钥在下一页中可用。
session.setAttribute()将使密钥在所有页面中可用。