Ajax Tiles:存在HTML源代码,但有些区块未呈现

时间:2015-09-04 01:35:57

标签: ajax spring-webflow spring-js

问题

我真的被困在这上面了。非常感谢专家的帮助。

我使用的是webflow2 / spring4?thymeleaf / tiles2。

当我发出一个ajax请求时,只有一些图块可以呈现,但是所有的图块都是#34;然后是#34;当我看到html源代码时。我也不知道为什么有些是可见的而有些则不可见。

我无法确定渲染的和未渲染的区别。

原谅屏幕截图,但它有助于显示问题。

这就是页面的样子: enter image description here

这是在ajax调用之后呈现的内容 enter image description here

相关代码如下:

Tiles配置



<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>
&#13;
&#13;
&#13;

除了启动了ajax调用的s4之外,没有渲染s1到s8的tile。

模板 (瓷砖:包括和瓷砖:取而代之的似乎有所作为)

&#13;
&#13;
<!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>
..........
&#13;
&#13;
&#13;

的Webflow

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

Ajax Call

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

好的,这是&#34;它现在有效&#34;回答,但这不是完整的解释。 非常感谢专家解释。

非显示瓷砖的唯一共同点是它们都是内表的一部分。

我从模板中删除了内部表格,现在它可以正常工作。

我不明白为什么这解决了这个问题。 我也不确定问题是瓷砖,百里香还是网络流。