2015-09-04 3 views
0

ПроблемуAjax плитки: источник HTML присутствует, но некоторые плитки не оказали

Я действительно застрял на этом. Экспертная помощь будет очень оценена.

Я использую webflow2/spring4? Thymeleaf/tiles2.

Когда я делаю запрос ajax, только некоторые фрагменты визуализируются, но все плитки «там», когда я смотрю на источник html. Я также не понимаю, почему некоторые из них визуализируются, а некоторые нет.

Я не могу определить четкую разницу между отображаемыми и не отображаемыми.

Простите скриншоты, но это помогает показать проблему.

Это то, что страница должна выглядеть следующим образом: enter image description here

Это то, что оказывается после АЯКС вызова enter image description here

Соответствующий код выглядит следующим образом:

плитки Config

<definition name="standard2r1ct2cb" template="/layouts/standard2r1ct2cb" templateType="thymeleaf"> 
 
\t \t <put-attribute name="header" value="/tiles/headerTile :: mainHead" type="thymeleaf" cascade="true" /> 
 
\t \t <put-attribute name="banner" value="/tiles/bannerTile :: mainBanner" type="thymeleaf" cascade="true" /> 
 
\t \t <put-attribute name="pageTitleTile" value="/tiles/pageTitleTile :: pageTitleTile_hello" type="thymeleaf" cascade="true" /> 
 
\t \t <put-attribute name="s1" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" /> 
 
\t \t <put-attribute name="s2" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" /> 
 
\t \t <put-attribute name="s3" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" /> 
 
\t \t <put-attribute name="s4" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" /> 
 
\t \t <put-attribute name="s5" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" /> 
 
\t \t <put-attribute name="s6" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" /> 
 
\t \t <put-attribute name="s7" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" /> 
 
\t \t <put-attribute name="s8" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" /> 
 
\t </definition> 
 

 

 
\t 
 
\t 
 
\t 
 
\t 
 
\t <definition name="xzcreatetesttype" extends="standard2r1ct2cb" templateType="thymeleaf"> 
 
\t \t <put-attribute name="pageTitleTile" value="/tiles/pageTitleTile :: pageTitleTile_newtt" type="thymeleaf" cascade="true" /> 
 
\t \t <put-attribute name="s1" value="/ajaxTiles/newTestTypeAjaxFragment :: s1" type="thymeleaf" cascade="true"/> 
 
\t \t <put-attribute name="s2" value="/ajaxTiles/selectedTestUnitTypesAjaxFragment" type="thymeleaf" cascade="true" /> 
 
\t \t <put-attribute name="s4" value="/ajaxTiles/addTutAjaxFragment" type="thymeleaf" cascade="true"/> 
 
\t \t <put-attribute name="s6" value="/tiles/pageTitleTile :: pageTitleTile_newtut" type="thymeleaf" cascade="true"/> 
 
\t \t <put-attribute name="s7" value="/tiles/xzcreatetestunittypeTiles :: selectedTucets" type="thymeleaf" cascade="true"/> 
 
\t \t <put-attribute name="s8" value="/tiles/xzcreatetestunittypeTiles :: tucetsList" type="thymeleaf" cascade="true"/> 
 
\t \t 
 
\t </definition>

Ни один из s1 через s8 плитки не предоставляются, за исключением s4, который инициировал вызов Ajax.

Шаблон (плитка: включать и плитки: заменить, кажется, не делают разницы)

<!DOCTYPE html> 
 
<html xmlns="http://www.w3.org/1999/xhtml" 
 
\t xmlns:th="http://www.thymeleaf.org" 
 
\t xmlns:tiles="http://www.thymeleaf.org" 
 
\t xmlns:sec="http://www.thymeleaf.org" lang="en"> 
 

 
<head tiles:include="header"></head> 
 
<body> 
 
\t <div tiles:include="banner"></div> \t 
 
\t <TABLE id="bodyMainTable"> 
 
\t \t <TR> 
 
\t \t \t <div tiles:include="pageTitleTile">s1</div> 
 
\t \t </TR> 
 
\t \t <TR> 
 
\t \t \t <TD id="bodyMainCellBody" colspan="2"><br /> <br /> <br /> 
 
\t \t \t \t <TABLE id="bodyInnerTable"> 
 
\t \t \t \t \t <TR> 
 
\t \t \t \t \t \t <TD colspan="2" id="bodyMainCellBody" > 
 

 
\t \t \t \t \t \t \t <div tiles:replace="s1">s1</div> 
 
\t \t \t \t \t \t \t <div tiles:replace="s2">s2</div> 
 
\t \t \t \t \t \t </TD> 
 
\t \t \t \t \t </TR> 
 
\t \t \t \t \t <TR> 
 
\t \t \t \t \t \t <TD id="bodyMainCellBody" style="width:50%"> 
 
\t \t \t \t \t \t \t <div tiles:replace="s3">s3</div> 
 
\t \t \t \t \t \t \t <div tiles:replace="s4">s4</div> 
 
\t \t \t \t \t \t \t <div tiles:include="s5">s5</div> 
 
\t \t \t \t \t \t </TD> 
 
\t \t \t \t \t \t <TD id="bodyMainCellBody" style="width:50%"> 
 
\t \t \t \t \t \t  <div tiles:include="s6">s3</div> 
 
\t \t \t \t \t \t \t <div tiles:include="s7">s4</div> 
 
\t \t \t \t \t \t \t <div tiles:include="s8">s5</div></TD> 
 
\t \t \t \t \t </TR> 
 
..........

WebFlow

<view-state id="xzcreatetesttype"> 
 
\t \t <transition on="addtut"> 
 
\t \t \t <evaluate 
 
\t \t \t \t expression="testTypeViewService.addTestUnitTypeToTestType(flowScope.vwNewTestType,flowRequestContext)" 
 
\t \t \t \t result="flowScope.vwNewTestType" /> 
 
\t \t \t \t 
 
\t \t \t <render fragments="s2,s4" /> 
 
\t \t </transition> 
 
\t \t 
 
.......... \t \t

Ajax вызова

<table id="bodyInnerTable" 
 
\t style="border: 1px solid #007589; width: 100%; vertical-align: top"> 
 
\t <tr> 
 
\t \t <td id="bodyMainCellHead" colspan="2" th:text="#{label.availabletuts}">Name</td> 
 

 
\t </tr> 
 
\t 
 
\t <!-- Iterate through the children (retrieved from db and held in bean as TreeMap) 
 
\t Each <a> tag must have a unique th:id. 
 
\t 
 
\t --> 
 
\t <tr th:each="tut : ${vwNewTestType.tutMap}" th:if="${vwNewTestType.tutMap.size() > 0}"> 
 
\t \t <td><a th:id="${tut.value}" name="addtutname" 
 
\t \t \t th:href="@{'~' + ${flowExecutionUrl}(_eventId=addtut, tutid=${tut.value},tutname=${tut.key})}">Add</a></td> 
 
\t \t <td th:text="${tut.key}">id</td> 
 
\t </tr> 
 
</table> 
 

 

 
<!-- dojo .forEach will then allow for identification of which element is clicked and the webflow transition on=""addtut" is called--> 
 

 
<script type="text/javascript"> 
 
\t 
 
\t 
 
\t dojo.query("a[name=addtutname]").forEach(function(element) 
 
\t \t \t { 
 
\t \t \t  Spring.addDecoration(new Spring.AjaxEventDecoration({ 
 
\t \t \t   elementId: element.id, 
 
\t \t \t   event: "onclick" 
 
\t \t \t   //params: { fragments:"s2,s4"} 
 
\t \t \t  })) 
 
\t \t \t }); 
 
</script>

ответ

0

ОК, это "он работает сейчас" ответ, но это не полное объяснение. Экспертное объяснение будет принята с благодарностью.

Единственное, что не отображало плитки, было то, что они были частью внутреннего стола.

Я удалил внутренний стол из шаблона, и теперь он работает.

Я не понимаю, почему это устранило проблему. Я также не уверен, проблема в том, что плитки, тимелеар или веб-поток.