You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Jason Suplizio <su...@gmail.com> on 2006/02/24 21:26:50 UTC
TableView update problems
Hello,
We've got a TableView (wrapped in a Form component) that consists of a
variety of form elements. We're noticing a problem when the values of these
elements (like textfields) is changed. Here's a use case: I have 10 rows,
each is updated and when the changes are submitted, the iterator only sets
the new values on the first row...so row 1 is updated with the values of row
1, then row 1 is updated with row 2,...repeat until the last row is reached
- where row 1 will then contain row 10's values - and the rest of the rows
values remain unchanged (with values before any changes were submitted).
Please help, this thing's on its way to QA....
<table width="100%" border="0" jwcid="layoutNavTable" name="layoutNavTable"
id="layoutNavTable" class="centerInnerTbl">
<span jwcid="layoutNavTableColumns"/>
<span jwcid="layoutNavTableRows">
<!-- Blocks for custom rows values -->
<span jwcid="layoutNavTableValues">
<span jwcid="actionsColumnValue">
<input jwcid="deleteNavColumn"
image="ognl:components.reportMapAssets.assets.deleteAction" alt="Delete
Admin Report Map" onclick="javascript: getConfirmation();"
class="imgInput"/>
</span>
<span jwcid="sortColumnValue">
<span jwcid="sortField"></span>
</span>
<span jwcid="colTitleColumnValue">
<span jwcid="colTitleField"></span>
</span>
<span jwcid="dataFieldColumnValue">
<span jwcid="dataField"></span>
</span>
<span jwcid="alignColumnValue">
<input jwcid="alignSelect"/>
</span>
<span jwcid="typeColumnValue">
<input jwcid="typeSelect"/>
</span>
<span jwcid="widthColumnValue">
<span jwcid="width"></span>
</span>
<span jwcid="colSpanColumnValue">
<span jwcid="colSpan"></span>
</span>
<span jwcid="navContextColumnValue">
<span jwcid="navContextSelect"/>
</span>
<span jwcid="visibleColumnValue">
<input jwcid="visibleSelect"/>
</span>
<span jwcid="requiredColumnValue">
<input jwcid="requiredSelect"/>
</span>
</span>
<!-- //end rows block -->
</span>
<tr>
<td colspan="11" align="right"><input
jwcid="addNavColumn" class="submitBtn"/></td>
</tr>
</table>
/** From the .page file **/
<property name="row"/> <!-- holder for current collection row -->
<property name="currentEntry"/>
<property name="currentMap"/>
<component id="layoutNavTable" type="contrib:TableView">
<binding name="source" value="layoutNavColumns"/>
<binding name="columns" value="literal:!actions: :actions,
!sort:Order:sort, !colTitle:Col Title:colTitle, !dataField:Data
Field:dataField, !align:Align:align, !type:Type:type, !width:Width %:width,
!colSpan:Colspan:colSpan, !navContext:Nav Context:navContext,
!visible:Visible:visble, !required:Required:required"/>
</component>
<component id="layoutNavTableColumns" type="contrib:TableColumns">
<binding name="arrowUpAsset" value="
components.reportMapAssets.assets.upArrow"/>
<binding name="arrowDownAsset" value="
components.reportMapAssets.assets.downArrow"/>
</component>
<component id="layoutNavTablePages" type="contrib:TablePages"/>
<component id="layoutNavTableRows" type="contrib:TableRows">
<binding name="row" value="row"/> <!-- The value object of the
current row being rendered -->
</component>
<component id="layoutNavTableValues" type="contrib:TableValues"/>
<component id="actionsColumnValue" type="Block"/>
<component id="deleteNavColumn" type="ImageSubmit">
<binding name="listener" value="listener:doDeleteNavColumn"/>
<binding name="parameters" value="row"/>
</component>
<!-- Customized sort column -->
<component id="sortColumnValue" type="Block"/>
<component id="sortField" type="TextField">
<binding name="value" value="ognl:row.sort"/>
<binding name="size" value="1"/>
<binding name="translator" value="translator:number"/>
<binding name="validators" value="validators:min=0"/>
<binding name="displayName" value="literal:Sort"/>
</component>
<!-- Customized columnTitle column -->
<component id="colTitleColumnValue" type="Block"/>
<component id="colTitleField" type="TextField">
<binding name="value" value="ognl:row.colTitle"/>
<binding name="size" value="15"/>
</component>
<!-- Customized Data Field column -->
<component id="dataFieldColumnValue" type="Block"/>
<component id="dataField" type="TextField">
<binding name="value" value="ognl:row.dataField"/>
<binding name="size" value="15"/>
</component>
<!-- Customized Align column -->
<component id="alignColumnValue" type="Block"/>
<component id="alignSelect" type="PropertySelection">
<binding name="model" value="row.availAlign"/>
<binding name="value" value="row.align"/>
</component>
<!-- Customized Type column -->
<component id="typeColumnValue" type="Block"/>
<component id="typeSelect" type="PropertySelection">
<binding name="model" value="row.availType"/>
<binding name="value" value="row.type"/>
</component>
<!-- Customized Width column -->
<component id="widthColumnValue" type="Block"/>
<component id="width" type="TextField">
<binding name="value" value="ognl:row.width"/>
<binding name="size" value="1"/>
</component>
<!-- Customized Colspan column -->
<component id="colSpanColumnValue" type="Block"/>
<component id="colSpan" type="TextField">
<binding name="value" value="ognl:row.colSpan"/>
<binding name="size" value="1"/>
</component>
<!-- Customized Nav Context column -->
<component id="navContextColumnValue" type="Block"/>
<component id="navContextSelect" type="PropertySelection">
<binding name="model" value="row.availNavContext"/>
<binding name="value" value="row.navContext"/>
</component>
<component id="addNavColumn" type="Submit">
<binding name="listener" value="listener:doAddNavColumn"/>
<binding name="value" value="literal:Add Column"/>
</component>
<!-- Customized Visible column -->
<component id="visibleColumnValue" type="Block"/>
<component id="visibleSelect" type="PropertySelection">
<binding name="model" value="row.availVisible"/>
<binding name="value" value="row.visible"/>
</component>
<!-- Customized Required column -->
<component id="requiredColumnValue" type="Block"/>
<component id="requiredSelect" type="PropertySelection">
<binding name="model" value="row.availRequired"/>
<binding name="value" value="row.required"/>
</component>
<!-- Customized Parameter column -->
<component id="parameterTable" type="contrib:TableView">
<binding name="source" value="paramColumns"/>
<binding name="columns" value="literal:!deleteActions:
:deleteActions, !parameter:Parameter:parameter, !value:Value:value"/>
</component>
<component id="parameterTableColumns"
type="contrib:TableColumns"></component>
<component id="parameterTablePages" type="contrib:TablePages"/>
<component id="parameterTableRows" type="contrib:TableRows">
<binding name="row" value="currentEntry"/> <!-- The value
object of the current row being rendered -->
</component>
<component id="parameterTableValues" type="contrib:TableValues"/>
<component id="deleteActionsColumnValue" type="Block"/>
<component id="paramDeleteColumn" type="ImageSubmit">
<binding name="listener" value="listener:doDeleteParamColumn"/>
<binding name="parameters" value="currentEntry"/>
<binding name="image" value="ognl:
components.reportMapAssets.assets.deleteAction"/>
<binding name="alt" value="literal:Delete Report Map"/>
</component>
Re: TableView update problems
Posted by Jason Suplizio <su...@gmail.com>.
Any idea on what could be causing this?
On 2/24/06, Jason Suplizio <su...@gmail.com> wrote:
>
> Hello,
> We've got a TableView (wrapped in a Form component) that consists of a
> variety of form elements. We're noticing a problem when the values of these
> elements (like textfields) is changed. Here's a use case: I have 10 rows,
> each is updated and when the changes are submitted, the iterator only sets
> the new values on the first row...so row 1 is updated with the values of row
> 1, then row 1 is updated with row 2,...repeat until the last row is reached
> - where row 1 will then contain row 10's values - and the rest of the rows
> values remain unchanged (with values before any changes were submitted).
>
> Please help, this thing's on its way to QA....
>
>
> <table width="100%" border="0" jwcid="layoutNavTable"
> name="layoutNavTable" id="layoutNavTable" class="centerInnerTbl">
> <span jwcid="layoutNavTableColumns"/>
>
> <span jwcid="layoutNavTableRows">
>
> <!-- Blocks for custom rows values -->
> <span jwcid="layoutNavTableValues">
>
> <span jwcid="actionsColumnValue">
> <input jwcid="deleteNavColumn"
> image="ognl: components.reportMapAssets.assets.deleteAction" alt="Delete
> Admin Report Map" onclick="javascript: getConfirmation();"
> class="imgInput"/>
> </span>
> <span jwcid="sortColumnValue">
> <span jwcid="sortField"></span>
> </span>
> <span jwcid="colTitleColumnValue">
> <span jwcid="colTitleField"></span>
> </span>
> <span jwcid="dataFieldColumnValue">
> <span jwcid="dataField"></span>
> </span>
> <span jwcid="alignColumnValue">
> <input jwcid="alignSelect"/>
> </span>
> <span jwcid="typeColumnValue">
> <input jwcid="typeSelect"/>
> </span>
> <span jwcid="widthColumnValue">
> <span jwcid="width"></span>
> </span>
> <span jwcid="colSpanColumnValue">
> <span jwcid="colSpan"></span>
> </span>
> <span jwcid="navContextColumnValue">
> <span jwcid="navContextSelect"/>
> </span>
> <span jwcid="visibleColumnValue">
> <input jwcid="visibleSelect"/>
> </span>
> <span jwcid="requiredColumnValue">
> <input jwcid="requiredSelect"/>
> </span>
> </span>
> <!-- //end rows block -->
>
> </span>
> <tr>
> <td colspan="11" align="right"><input
> jwcid="addNavColumn" class="submitBtn"/></td>
> </tr>
> </table>
>
> /** From the .page file **/
> <property name="row"/> <!-- holder for current collection row -->
> <property name="currentEntry"/>
> <property name="currentMap"/>
>
> <component id="layoutNavTable" type="contrib:TableView">
> <binding name="source" value="layoutNavColumns"/>
> <binding name="columns" value="literal:!actions: :actions,
> !sort:Order:sort, !colTitle:Col Title:colTitle, !dataField:Data
> Field:dataField, !align:Align:align, !type:Type:type, !width:Width %:width,
> !colSpan:Colspan:colSpan, !navContext:Nav Context:navContext,
> !visible:Visible:visble, !required:Required:required"/>
> </component>
>
> <component id="layoutNavTableColumns" type="contrib:TableColumns">
> <binding name="arrowUpAsset" value="
> components.reportMapAssets.assets.upArrow "/>
> <binding name="arrowDownAsset" value="
> components.reportMapAssets.assets.downArrow"/>
> </component>
>
> <component id="layoutNavTablePages" type="contrib:TablePages"/>
>
> <component id="layoutNavTableRows" type="contrib:TableRows">
> <binding name="row" value="row"/> <!-- The value object of
> the current row being rendered -->
> </component>
>
> <component id="layoutNavTableValues" type="contrib:TableValues"/>
>
> <component id="actionsColumnValue" type="Block"/>
>
> <component id="deleteNavColumn" type="ImageSubmit">
> <binding name="listener" value="listener:doDeleteNavColumn"/>
> <binding name="parameters" value="row"/>
> </component>
>
> <!-- Customized sort column -->
> <component id="sortColumnValue" type="Block"/>
>
> <component id="sortField" type="TextField">
> <binding name="value" value="ognl:row.sort"/>
> <binding name="size" value="1"/>
> <binding name="translator" value="translator:number"/>
> <binding name="validators" value="validators:min=0"/>
> <binding name="displayName" value="literal:Sort"/>
> </component>
>
> <!-- Customized columnTitle column -->
> <component id="colTitleColumnValue" type="Block"/>
>
> <component id="colTitleField" type="TextField">
> <binding name="value" value="ognl: row.colTitle"/>
> <binding name="size" value="15"/>
> </component>
>
> <!-- Customized Data Field column -->
> <component id="dataFieldColumnValue" type="Block"/>
>
> <component id="dataField" type="TextField">
> <binding name="value" value="ognl:row.dataField"/>
> <binding name="size" value="15"/>
> </component>
>
> <!-- Customized Align column -->
> <component id="alignColumnValue" type="Block"/>
>
> <component id="alignSelect" type="PropertySelection">
> <binding name="model" value="row.availAlign"/>
> <binding name="value" value="row.align"/>
> </component>
>
> <!-- Customized Type column -->
> <component id="typeColumnValue" type="Block"/>
>
> <component id="typeSelect" type="PropertySelection">
> <binding name="model" value=" row.availType"/>
> <binding name="value" value="row.type"/>
> </component>
>
> <!-- Customized Width column -->
> <component id="widthColumnValue" type="Block"/>
>
> <component id="width" type="TextField">
> <binding name="value" value="ognl:row.width"/>
> <binding name="size" value="1"/>
> </component>
>
> <!-- Customized Colspan column -->
> <component id="colSpanColumnValue" type="Block"/>
>
> <component id="colSpan" type="TextField">
> <binding name="value" value="ognl:row.colSpan"/>
> <binding name="size" value="1"/>
> </component>
>
> <!-- Customized Nav Context column -->
> <component id="navContextColumnValue" type="Block"/>
>
> <component id="navContextSelect" type="PropertySelection">
> <binding name="model" value=" row.availNavContext"/>
> <binding name="value" value="row.navContext"/>
> </component>
>
> <component id="addNavColumn" type="Submit">
> <binding name="listener" value="listener:doAddNavColumn"/>
> <binding name="value" value="literal:Add Column"/>
> </component>
>
> <!-- Customized Visible column -->
> <component id="visibleColumnValue" type="Block"/>
>
> <component id="visibleSelect" type="PropertySelection">
> <binding name="model" value="row.availVisible"/>
> <binding name="value" value="row.visible"/>
> </component>
>
> <!-- Customized Required column -->
> <component id="requiredColumnValue" type="Block"/>
>
> <component id="requiredSelect" type="PropertySelection">
> <binding name="model" value=" row.availRequired"/>
> <binding name="value" value="row.required"/>
> </component>
>
>
> <!-- Customized Parameter column -->
>
> <component id="parameterTable" type="contrib:TableView">
> <binding name="source" value="paramColumns"/>
> <binding name="columns" value="literal:!deleteActions:
> :deleteActions, !parameter:Parameter:parameter, !value:Value:value"/>
> </component>
>
> <component id="parameterTableColumns"
> type="contrib:TableColumns"></component>
>
> <component id="parameterTablePages" type="contrib:TablePages"/>
>
> <component id="parameterTableRows" type="contrib:TableRows">
> <binding name="row" value="currentEntry"/> <!-- The value
> object of the current row being rendered -->
> </component>
>
> <component id="parameterTableValues" type="contrib:TableValues"/>
>
> <component id="deleteActionsColumnValue" type="Block"/>
>
> <component id="paramDeleteColumn" type="ImageSubmit">
> <binding name="listener" value="listener:doDeleteParamColumn"/>
> <binding name="parameters" value="currentEntry"/>
> <binding name="image" value="ognl:
> components.reportMapAssets.assets.deleteAction"/>
> <binding name="alt" value="literal:Delete Report Map"/>
> </component>
>