ここで説明されているのと同様の問題があります: ( http://apache-tapestry-mailing-list-archives.1045711.n5.nabble.com/Zone-refresh-inserts-duplicate-html-td5722328.html )
並べ替えアイコンをクリックしてGrid
(データベースからデータをプルするカスタム提供GridDataSource
で、並べ替えは DB 側で行われます) 並べ替えると、現在のグリッドのコピーがその下に表示されているように、グリッドが複製されます。次のグリッド ソート イベントは、ソート列をクリックしているグリッドにのみ影響します。たとえば、クリックして 1 番目のグリッドの 1 番目の列でソートすると、2 番目のグリッドは影響を受けず、その逆も同様です。ページを更新すると、2 番目のグリッドが消え、正方形 1 から再び移動します。
Thiago H. de Paula Figueiredo からのアドバイスを試してみましたが、ゾーン自体の代わりにゾーンの本体をaddRender
メソッドに渡してみることができましたが、結果はありませんでした。
編集:コードを追加しました。
マイページの構造:
<t:zone t:id="zone1" id="zone1">
<t:form t:id="form1" id="form1" t:zone="zone1">
<t:beaneditor t:id="filterEditor" t:object="filter">
</t:beaneditor>
...
<input id="submitFilter" t:id="submitFilter" class="button" t:type="submit" value="Submit" zone="zone1"/>
</t:form>
<t:form t:id="form2" id="form2" t:zone="^">
<input id="resetFilter" t:id="resetFilter" class="button" t:type="submit" value="Reset" zone="zone1"/>
</t:form>
</t:zone>
<t:zone t:id="zone2" id="zone2">
<t:form t:id="form3" id="form3" t:zone="^" t:autofocus="true">
...
<input type="submit" value="Cancel" class="button"/>
</t:form>
</t:zone>
<t:zone t:id="zone3" id="zone3">
<t:form t:id="form4" id="form4" t:zone="^" t:autofocus="false">
<t:errors/>
<table>
<t:grid t:source="dataSource"
t:model="beanModel"
t:row="entry"
t:encoder="encoder"
t:rowsPerPage="5"
t:pagerPosition="both"
t:inplace="true">
<p:cell1>
...
</p:cell1>
<p:cell2>
...
</p:cell2>
<p:cell3>
...
</p:cell3>
<p:cell4>
...
</p:cell4>
<p:cell5>
...
</p:cell5>
</t:grid>
</table>
</t:form>
</t:zone>
クリックしてゾーン 3 のグリッドのセルを並べ替えると (並べ替えは SQL を介して DB 側で行われます)、テーブル HTML が複製され、別の別のテーブルとして機能します。
次のようにゾーンを更新しようとしました:
if (request.isXHR()) {
ajaxResponseRendered.addRender(zone1).addRender(zone2).addRender(zone3);
}
そしてこのように:
if (request.isXHR()) {
ajaxResponseRendered.addRender(zone1.getCliendId(), zone1.getBody()).addRender(zone2.getCliendId(), zone2.getBody()).addRender(zone3.getCliendId(), zone3.getBody());
}
しかし、うまくいきませんでした。