如何在Java中的Struts应用程序中将自定义变量保存到请求中?

如何在Java中的Struts应用程序中将自定义变量保存到请求中?,java,jquery,jsp,struts-1,Java,Jquery,Jsp,Struts 1,我正在使用Struts 1.2和J2EE1.4。我对Struts和Java非常陌生,所以希望有一个简单的解决方案来解决我的问题。我的页面设置如下: $('.success, .error, .success_header, .error_header').hide(); $('form#contactForm').show(); 成功的HTML 我们现在遇到了技术上的困难。请稍后重试您的请求 最初,成功、错误和联系我们div都是隐藏的。我在一个模式对话框中单击时会显示联系人表单,如下所

我正在使用Struts 1.2和J2EE1.4。我对Struts和Java非常陌生,所以希望有一个简单的解决方案来解决我的问题。我的页面设置如下:

$('.success, .error, .success_header, .error_header').hide();
$('form#contactForm').show();

成功的HTML
我们现在遇到了技术上的困难。请稍后重试您的请求


最初,成功、错误和联系我们div都是隐藏的。我在一个模式对话框中单击时会显示联系人表单,如下所示:

$('.success, .error, .success_header, .error_header').hide();
$('form#contactForm').show();
因此,在我的操作中,我希望能够将所有内容发送回相同的输入
转发
,而不管是否存在验证错误但是我想在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;
    

    是否有方法在
    操作
    中设置一个变量,在调用
    ActionForward
    后,可以在
    jsp
    页面中检索该变量。最好通过jQuery在
    $(文档)中访问。准备好了吗?
    函数?

    您可以使用普通的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>
    

    类似地,在Action类中,可以设置这些属性-应用程序上下文由ServletContext类访问

    谢谢。这应该能奏效。检查
    请求
    是否有错误可能更有意义,但
    设置属性
    将帮助我保存更多我想获取的内容。@Rondel我还建议对键值使用常量;只是想保持简单。有些人也把一切都用行动的形式表现出来;这是一个偏好的问题。很抱歉,您必须使用如此古老的技术。建议:使用struts2,它与Struts1完全不同,最终您将切换到struts2。Struts2不需要任何以前使用Struts1的经验,因此学习它非常容易。@XCoder我希望我能。不幸的是,我无法决定我可以使用哪些技术来实现这一点。
    Request - request.getAttribute(...)
    Session - request.getSession().getAttribute(...)
    Application - application.getAttribute(...)