問題
私は本当にこれにこだわっています。専門家の助けをいただければ幸いです。
webflow2/spring4?thymeleaf/tiles2 を使用しています。
ajax リクエストを行うと、一部のタイルのみが表示されますが、html ソースを見るとすべてのタイルが表示されます。また、一部が表示され、一部が表示されない理由についても途方に暮れています。
レンダリングされたものとレンダリングされていないものの明確な違いを識別することはできません。
スクリーンショットはご容赦ください。ただし、問題を示すのに役立ちます。
関連するコードは次のとおりです。
タイル構成
<definition name="standard2r1ct2cb" template="/layouts/standard2r1ct2cb" templateType="thymeleaf">
<put-attribute name="header" value="/tiles/headerTile :: mainHead" type="thymeleaf" cascade="true" />
<put-attribute name="banner" value="/tiles/bannerTile :: mainBanner" type="thymeleaf" cascade="true" />
<put-attribute name="pageTitleTile" value="/tiles/pageTitleTile :: pageTitleTile_hello" type="thymeleaf" cascade="true" />
<put-attribute name="s1" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" />
<put-attribute name="s2" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" />
<put-attribute name="s3" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" />
<put-attribute name="s4" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" />
<put-attribute name="s5" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" />
<put-attribute name="s6" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" />
<put-attribute name="s7" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" />
<put-attribute name="s8" value="/tiles/blank :: blank" type="thymeleaf" cascade="true" />
</definition>
<definition name="xzcreatetesttype" extends="standard2r1ct2cb" templateType="thymeleaf">
<put-attribute name="pageTitleTile" value="/tiles/pageTitleTile :: pageTitleTile_newtt" type="thymeleaf" cascade="true" />
<put-attribute name="s1" value="/ajaxTiles/newTestTypeAjaxFragment :: s1" type="thymeleaf" cascade="true"/>
<put-attribute name="s2" value="/ajaxTiles/selectedTestUnitTypesAjaxFragment" type="thymeleaf" cascade="true" />
<put-attribute name="s4" value="/ajaxTiles/addTutAjaxFragment" type="thymeleaf" cascade="true"/>
<put-attribute name="s6" value="/tiles/pageTitleTile :: pageTitleTile_newtut" type="thymeleaf" cascade="true"/>
<put-attribute name="s7" value="/tiles/xzcreatetestunittypeTiles :: selectedTucets" type="thymeleaf" cascade="true"/>
<put-attribute name="s8" value="/tiles/xzcreatetestunittypeTiles :: tucetsList" type="thymeleaf" cascade="true"/>
</definition>
ajax 呼び出しを開始した s4 を除いて、s1 から s8 までのタイルはレンダリングされません。
テンプレート (tiles:include と tiles:replace は違いがないようです)
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:tiles="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org" lang="en">
<head tiles:include="header"></head>
<body>
<div tiles:include="banner"></div>
<TABLE id="bodyMainTable">
<TR>
<div tiles:include="pageTitleTile">s1</div>
</TR>
<TR>
<TD id="bodyMainCellBody" colspan="2"><br /> <br /> <br />
<TABLE id="bodyInnerTable">
<TR>
<TD colspan="2" id="bodyMainCellBody" >
<div tiles:replace="s1">s1</div>
<div tiles:replace="s2">s2</div>
</TD>
</TR>
<TR>
<TD id="bodyMainCellBody" style="width:50%">
<div tiles:replace="s3">s3</div>
<div tiles:replace="s4">s4</div>
<div tiles:include="s5">s5</div>
</TD>
<TD id="bodyMainCellBody" style="width:50%">
<div tiles:include="s6">s3</div>
<div tiles:include="s7">s4</div>
<div tiles:include="s8">s5</div></TD>
</TR>
..........
ウェブフロー
<view-state id="xzcreatetesttype">
<transition on="addtut">
<evaluate
expression="testTypeViewService.addTestUnitTypeToTestType(flowScope.vwNewTestType,flowRequestContext)"
result="flowScope.vwNewTestType" />
<render fragments="s2,s4" />
</transition>
..........
Ajax 呼び出し
<table id="bodyInnerTable"
style="border: 1px solid #007589; width: 100%; vertical-align: top">
<tr>
<td id="bodyMainCellHead" colspan="2" th:text="#{label.availabletuts}">Name</td>
</tr>
<!-- Iterate through the children (retrieved from db and held in bean as TreeMap)
Each <a> tag must have a unique th:id.
-->
<tr th:each="tut : ${vwNewTestType.tutMap}" th:if="${vwNewTestType.tutMap.size() > 0}">
<td><a th:id="${tut.value}" name="addtutname"
th:href="@{'~' + ${flowExecutionUrl}(_eventId=addtut, tutid=${tut.value},tutname=${tut.key})}">Add</a></td>
<td th:text="${tut.key}">id</td>
</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">
dojo.query("a[name=addtutname]").forEach(function(element)
{
Spring.addDecoration(new Spring.AjaxEventDecoration({
elementId: element.id,
event: "onclick"
//params: { fragments:"s2,s4"}
}))
});
</script>