![](/img/trans.png)
[英]How many sessions can be managed by an Java Application in Struts 2?
[英]How can I save custom variables into the request in a Struts application in Java?
我正在使用Struts 1.2和J2EE 1.4。 我对Struts和Java很陌生,所以希望我的问题有一个简单的解决方案。 我有一个这样的页面设置:
<div class="success">
HTML for success
</div>
<div class="error">
<p>We are experiencing technical difficulties at this time. Please try your request again later.</p>
</div>
<div id="contact-form-block">
<html:form action="/reg" id="contactform">
<br /><html:text property="firstName"/><html:errors property="firstName"/>
<p><input type="image" src="images/reset_btn.png" id="reset" name="reset" alt="Reset" /><input type="image" src="images/submit_btn.png" id="submit" name="submit" alt="Submit" /></p>
</div>
</html:form>
</div>
最初的成功,错误和联系我们的div都是隐藏的。 我在点击模式对话框时显示联系表格,如下所示:
$('.success, .error, .success_header, .error_header').hide();
$('form#contactForm').show();
因此,在我的Action中,我希望能够将所有内容发送回相同的输入forward
无论是否存在验证错误。 但是我想检查jQuery中的jsp页面以检查应该显示哪个对话框:
这是我的行动:
if ("reg".equalsIgnoreCase(contactUsForm.getAction())) {
ActionMessages errors = getErrors(request);
errors = validate(contactUsForm);
if (errors.isEmpty()) {
//Save some variable to the request/response to say that registration was successful
} else {
//save something to say that registration was not successful
saveErrors(request, errors);
}
}
return actionForward;
有没有办法在Action
中设置一个变量,可以在调用ActionForward
后在jsp
页面中检索该变量。 最好通过jQuery在$(document).ready
函数中访问?
您将使用普通的Struts和/或servlet规范机制。
您可以检查是否有错误; 它们存储在"org.apache.struts.action.ERROR"
键下的请求中; 你不需要特别添加任何东西,但如果你真的想要,你可以。
我更喜欢将非表单数据存储为请求属性:
request.setAttribute("haveErrors", true); // Or false, obviously.
然后,您需要在JSP中从请求中获取数据,并将其解释为JavaScript:
$(function() {
// Use normal JSP EL; haveErrors should display as a bare string,
// which is valid JS. Can modify as necessary if need be.
var haveErrors = ${haveErrors};
});
我不确定我是否理解正确的问题,但如果你的意思是,有没有办法让你把变量从Action类传递到JSP,那么是的。
在return语句之前的Action类中,将变量设置为请求上下文,如下所示:
request.setAttribute("successfulRegistration", "true");
永远记住,JSP在服务器端进行编译,然后在到达浏览器进行渲染或处理javascript之前,将任何HTML添加到响应中。 所以,
以JSP为例:
<script type="text/javascript>
var success = <% (String) request.getAttribute("successfulRegistration"); %>
</script>
因为变量是一个字符串,它可以缩短为:
<script type="text/javascript">
var success = <%=request.getAttribute("successfulRegistration")%>
</script>
javascript中的成功变量在到达浏览器之前已经在服务器端的JSP编译时分配了变量。
JSP可以通过请求,会话和应用程序上下文与Action类共享数据。
Request - request.getAttribute(...)
Session - request.getSession().getAttribute(...)
Application - application.getAttribute(...)
类似地,在Action类中可以设置这些 - ServletContext类访问应用程序上下文。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.