在使用sitemesh和struts2的回调中出现错误的ajax响应

在使用sitemesh和struts2的回调中出现错误的ajax响应,ajax,struts2,callback,response,sitemesh,Ajax,Struts2,Callback,Response,Sitemesh,我使用sitemesh和struts2框架构建了一个简单的web应用程序。现在,我在jsp中使用ajax回调获得正确的响应时遇到了一些问题。我在另一个web应用程序中成功地使用了相同的过程,但在struts 1中使用了tiles 我试图解释这个问题。 我有一个jsp(使用名为“basic theme.jsp”的模板中的sitemesh进行装饰,该模板带有decorator:title和decorator:body标记)。 该页面有一个输入按钮,它调用jQuery.ajax post函数: fun

我使用sitemesh和struts2框架构建了一个简单的web应用程序。现在,我在jsp中使用ajax回调获得正确的响应时遇到了一些问题。我在另一个web应用程序中成功地使用了相同的过程,但在struts 1中使用了tiles

我试图解释这个问题。 我有一个jsp(使用名为“basic theme.jsp”的模板中的sitemesh进行装饰,该模板带有decorator:title和decorator:body标记)。 该页面有一个输入按钮,它调用jQuery.ajax post函数:

function checkRicevuta(){
    var params = "actionToDo=checkRicevuta&idRicevuta="+$("#idRicevuta").val();
    $.ajax({
         type: "POST",
         url: "addettoReclami",
         data: params,
         success: function(response){
                    $("#checkRicevuta-box").append(response);
                  }
    });
}
url正在正确调用正在处理“参数”的ActionSupport类:

if(request.getParameter("actionToDo")!=null && request.getParameter("actionToDo").equals("checkRicevuta")){
        logger.info("Avvio procedura di verifica ricevuta fiscale");
        String idRicevuta = request.getParameter("idRicevuta");
        if(dbController.checkRicevuta(idRicevuta))
            request.setAttribute("message", "Ricevuta valida!");
        else request.setAttribute("message", "Ricevuta non valida");

        return "esitoRicevuta";

    }
“esitoRicevuta”转发到一个简单的jsp,实际上只包含两行:

 <% String message = (String)request.getAttribute("message"); %>
 <p><%=message %></p> 

因为我想在发出ajax调用的第一个jsp的div中附加这个简单的响应。 问题是响应也被sitemesh修饰,所以我实际上得到了一个嵌套的基本主题。 在sitemesh xml中,我将排除模式设置为不处理位于“响应jsp”的/fragment/*路径:


/弹出窗口/*
/碎片/*
/*
我说过,用同样的方法处理瓷砖和支柱1,问题不会发生。 可能我错了,但我认为这是因为响应被附加在“调用方jsp”中,所以sitemesh会对页面进行两次装饰,一次用于调用方jsp的主体,另一次用于调用方jsp主体内的片段

所以我问你。。。为什么会出现这个问题?有没有办法避免这种情况


提前感谢

您不需要排除该操作吗?不确定,对SiteMesh不太熟悉。为什么您要从请求中获取/设置参数,而不是使用S2提供的机制?您是对的,一开始我更熟悉S1,所以我实现了ServletRequestAware和ServletResponseAware接口,并开始以旧的方式获取和设置参数/属性。现在我发现了S2,我越来越多地使用它的机制。顺便说一句,我认为问题并不存在于操作中,因为如果我的“action forward”指向一个名为check.jspf而不是check.jsp的文件,那么问题就不会发生(但在这种情况下,我无法处理jspf文件中的动态参数),我认为我无法为带有sitemesh的struts映射设置排除。
<?xml version="1.0" encoding="UTF-8"?>
<decorators>
   <excludes>
      <pattern>/popup/*</pattern>
      <pattern>/fragment/*</pattern>
   </excludes>
   <decorator name="basic-theme" page="/decorators/basic-theme.jsp">
      <pattern>/*</pattern>
   </decorator>
</decorators>