【问题标题】:How can I reload only div content in html:form action? Struts 1.3如何在 html:form 操作中仅重新加载 div 内容? Struts 1.3
【发布时间】:2013-01-14 11:54:13
【问题描述】:

我正在使用 Struts 1.3.10、Tiles 和 Hibernate 开发一个 Web 应用程序。

登录表单在正文块内,当登录按钮提交时,我只需要重新加载正文内容。 这是表格:

login.jsp 
<div class="login">
    <h2>Login</h2>
    <html:form action="/loginAction" >
        <div><p>User</p> <html:text property="userName" /></div>
        <div><p>Password</p> <html:password property="password" /></div>
        <div><html:submit value="Login"/></div>
    </html:form>
</div>

这是登录操作:

loginAction.java
 @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        loginForm lForm = (loginForm) form;
        String userName = lForm.getUserName();
        String password = lForm.getPassword();

        Boolean ack = Login.checkCredentials(userName, password);
        if(ack){
            HttpSession session = request.getSession();
            session.setAttribute("SessionLogin", "true");
        }else{ 
        }
        return null;
    }

我试图返回 null 因为我不需要转发到另一个页面,我只想重新加载 div 内容(通过 javascript)。但是这个动作的结果是白页。

你知道如何解决这个问题吗?

【问题讨论】:

  • 您是否考虑过使用 jquery 将数据作为 ajax 请求提交?
  • 是的!我试过但是 html:form definiton 需要关联到一个动作,我不知道如何避免这种情况,你知道吗?
  • 你可以使用

标签: java struts reload tiles


【解决方案1】:

使用下面的代码调用将提交 ajax 请求的 javascript 方法。

<html:button onclick="javascript:callMyMethodToSubmitAjax()" value="Submit"/>

javascript 看起来像下面的样子

<script type="text/javascript">
function callMyMethodToSubmitAjax() {

    var $form = $('#strutsFormHtmlId'); // set your form ID

    $.ajax({
        type: 'POST',
        url: $form.attr('action'),
        data: $form.serialize(), 
        success: function (msg) { 
            alert("success");
        },
        error: function (msg) {
           alert("error");
        }
    });
}

【讨论】:

  • 它工作不够,我的意思是我在javascript中正确获取了表单数据,但在ajax调用后没有显示警报,似乎某些操作不起作用。你能给我发一个 struts-config 和动作的例子吗?
  • 你看到请求被发送还是看到请求到达控制器?您可以使用 firebug 查看请求是否正在发送,也可以查看是否存在 javascript 错误。
  • 另一个问题,如果我想通过方法传递会话变量,我该怎么做?
  • 如果它在会话中,则无需将其从页面传递给控制器​​。你可以使用 request.getSession().getAttribute("attribute_name");
  • 如果您想将会话变量传递给 javascript 函数,只需在您的 jsp 中使用表达式 ${SessionLogin}。这仅适用于 jsp 2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
相关资源
最近更新 更多