Портлет Spring MVC - проблема с заменой Ajax JQuery html

во-первых - тег div не заменяется содержимым контроллера. во-вторых, даже если я заменил некоторые статические данные html, которые я закомментировал, функция js отображается только поверх html, но не заменяет данные таблицы. есть идеи, что я здесь делаю не так?

JSP

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>

<script type="text/javascript">
function ajaxRem(val) {
    var url = '<portlet:resourceURL id="ajaxRem"/>';
    var posting = $.post( url, { attachmentID: val } );  
  posting.done(function( data ) {  
    //$("#ajaxMarkup").html("<table><tr><td><b>Hello world!</b></td></tr></table>");
    $("#ajaxMarkup").html(data);
  });
}
</script>
</head>
<body>
<portlet:actionURL var="sendMessageURL"> <portlet:param name="action" value="send"></portlet:param> </portlet:actionURL>
<form:form method="post" id="replyMessageForm" commandName="messageForm" action="${sendMessageURL}" enctype="multipart/form-data">
    <portlet:defineObjects /> <br />
    <c:forEach items="${messageForm.messageList}" var="message" varStatus="status">
    <DIV id="ajaxMarkup">
        <TABLE cellpadding="0" cellspacing="0" class="BigPadTable" id="msgTableDisplay" border="0" jsid="msgTableDisplay">                                          
            <c:forEach items="${message.attachmentList}" var="attachment" varStatus="count">                                            
            <c:set value="${attachment.attachmentID}" var="attachmentID"></c:set>                                           
            <%                                          
            Integer msgIdInt = (Integer)pageContext.getAttribute("attachmentID");
            String attachID = msgIdInt.toString();                                          
            %>                                          
            <TR name="DataContainer">
                <TD name="DocSize_ColumnData" valign="top"
                    class="tableCell"><SPAN name="DocSize"
                    class="outputData"><c:out value="${attachment.attachmentSize}"/></SPAN>
                </TD>                                               
                <TD id="remAttach" name="Document_PageAutoDelete_ColumnData"
                    valign="top" class="tableCell"><p id="demo" onclick="javascript:ajaxRem(<%=attachID%>);"><u>[Remove]</u></p>
                </TD>                                               
            </TR>                                           
            </c:forEach>                                                                                
        </TR>
        </TABLE>
    </DIV>
</form:form>
</body>
</html>

Контроллер:

@Controller("sendMessageController")
@RequestMapping("VIEW")
@SessionAttributes(types = MessageForm.class)
public class SendMessageController implements HandlerExceptionResolver{ 
    @ResourceMapping("ajaxRem")
    public void ajaxRem(ResourceRequest request, ResourceResponse response, Map<String, Object> model,@Valid @ModelAttribute("messageForm") MessageForm messageForm, BindingResult result,@RequestParam(required=false, value="attachmentID") String attachmentID) throws Exception {               
        HttpServletRequest servletRequest = PortletUtils.getHttpServletRequest(request);
        PortletSession session = request.getPortletSession(false);      
        String attID = request.getParameter("attachmentID");
        ...logic to remove a record goes here...        
        model.put("messageForm", messageForm);  
        return new ModelAndView("fileList", model);     
    }   
}

fileList.jsp

<!DOCTYPE html>
<html>
<head>
<body>  
    <portlet:defineObjects /> <br />
    <c:forEach items="${messageForm.messageList}" var="message" varStatus="status">

        <TABLE cellpadding="0" cellspacing="0" class="BigPadTable" id="msgTableDisplay" border="0" jsid="msgTableDisplay">                                          
            <c:forEach items="${message.attachmentList}" var="attachment" varStatus="count">                                            
            <c:set value="${attachment.attachmentID}" var="attachmentID"></c:set>                                           
            <%                                          
            Integer msgIdInt = (Integer)pageContext.getAttribute("attachmentID");
            String attachID = msgIdInt.toString();                                          
            %>                                          
            <TR name="DataContainer">
                <TD name="DocSize_ColumnData" valign="top"
                    class="tableCell"><SPAN name="DocSize"
                    class="outputData"><c:out value="${attachment.attachmentSize}"/></SPAN>
                </TD>                                               
                <TD id="remAttach" name="Document_PageAutoDelete_ColumnData"
                    valign="top" class="tableCell"><p id="demo" onclick="javascript:ajaxRem(<%=attachID%>);"><u>[Remove]</u></p>
                </TD>                                               
            </TR>                                           
            </c:forEach>            
        </TABLE>
     </c:forEach>
</body>
</html>

person grek    schedule 12.01.2015    source источник


Ответы (1)


Сначала я бы посоветовал вам избавиться от тегов _1 _, _ 2 _, _ 3_ из вашего jsp, поскольку в любом проекте портлета они должны исходить из темы, а не из портлета.

если проблема не устранена, попробуйте выполнить отладку из firebug, если вы используете firefox или инструмент разработчика в случае chrome. Просто попробуйте удалить все из <div>, чтобы понять, действительно ли ts обновляет html или нет.

  $("#ajaxMarkup").html("");
person Gautam    schedule 18.01.2015