ПроблемуAjax плитки: источник HTML присутствует, но некоторые плитки не оказали
Я действительно застрял на этом. Экспертная помощь будет очень оценена.
Я использую webflow2/spring4? Thymeleaf/tiles2.
Когда я делаю запрос ajax, только некоторые фрагменты визуализируются, но все плитки «там», когда я смотрю на источник html. Я также не понимаю, почему некоторые из них визуализируются, а некоторые нет.
Я не могу определить четкую разницу между отображаемыми и не отображаемыми.
Простите скриншоты, но это помогает показать проблему.
Это то, что страница должна выглядеть следующим образом:
Это то, что оказывается после АЯКС вызова
Соответствующий код выглядит следующим образом:
плитки 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>