【问题标题】:Struts2 jquery Plugin responds to ajax requests with HTML of the entire pageStruts2 jquery Plugin用整个页面的HTML响应ajax请求
【发布时间】:2013-09-22 00:23:03
【问题描述】:

我正在尝试将 Struts2 jquery 插件用于我的某些表单上的 ajax 请求,但我对页面的响应有问题。 struts 动作经过验证并正确执行,但是当 jquery 获得响应时,它将响应设置为整个页面的 HTML ...它将响应放在正确的位置,但它没有以正确的方式响应全部...这里是jsp表单:

<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<div class="columnbox">
    <h2>Contact Us</h2>
    <div id="contact">
        <s:form id="contact_form" action="contact" method="post" cssClass="clearfix">

            <label for="contact_user">Username / In-game name:</label>
            <input type="text" id="contact_user" name="contactBean.username" class="field"
                        data-enter-click="sendbutton" maxlength="16" size="16" />

            <div id="contact_response" class="response">

            </div>

            <sj:submit 
                    formIds="contact_form"
                    id="sendbutton"
                    targets="contact_response" 
                    value="Send" 
                    button="true"
                    />

        </s:form>
    </div>
</div>

这里是contactAction类的一个片段:


public class ContactAction extends ActionSupport {

    private static final long serialVersionUID = -5484167219440627408L;

    private static final Log log = LogFactory.getLog(ContactAction.class);

    private ContactBean contactBean;


    @Override
    public String execute() throws Exception {
        log.info("TEST 4");
        //Do email stuff

        addActionMessage(Constants.EMAIL_SENT);

        log.info(this.getActionMessages());

        return Action.SUCCESS;
    }

    @Override
    public void validate() {
        System.out.println("TEST");
        log.info("TEST 2");
                //do validation
        if (contactBean == null) {
            addActionError("");
        }
        else if (contactBean.getUsername() == null || contactBean.getUsername().isEmpty()) {
            addActionError(Constants.NO_USERNAME);
        }
        log.info(this.getActionErrors());
    }

    public ContactBean getContactBean() {
        return contactBean;
    }

    public void setContactBean(ContactBean contactBean) {
        this.contactBean = contactBean;
    }

}

我很确定标签正是它应该的样子。请求正在正确发送,并且正在接收响应。这看起来像 jquery 的问题...... 感谢您的帮助

【问题讨论】:

  • 在不了解操作配置的情况下很难提供帮助。

标签: jquery ajax jsp struts2 actionresult


【解决方案1】:

响应正是结果执行后返回的东西。无论结果配置为将结果作为响应返回,实际返回的结果类型和结果代码都取决于您的操作配置。

返回整个页面作为结果的问题是因为验证失败时返回了INPUT 结果。您必须从堆栈中删除validation 拦截器,或者如果它是dispatcher 结果类型,请在结果执行之前更新结果配置的location 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    相关资源
    最近更新 更多