... означает pattern в общем английском языке, не относится к шаблонам проектирования ОО. Имеется таблица, подобная следующей (использующая <%%> в качестве общих тегов серверного сценария):
<form action="someUri" method="post">
<table>
<thead>
<tr>
<td>Widget ID</td>
<td>Description</td>
<td>Price</td>
</tr>
</thead>
<tbody>
<% foreach widget in widgets %>
<tr>
<td>
<!-- input ids need to be mangled
to preserve uniqueness -->
<input type="hidden" id="[Some_Mangled_Input_Id]"
value="<%= widget.Id %>" />
<%= widget.Id %>
</td>
<td>
<!-- prefill if exists for widget -->
<input type="text" id="[Some_Mangled_Input_Id]"
value="<%= widget.Description %>" />
</td>
<td>
<!-- prefill if exists for widget -->
<input type="text" id="[Some_Mangled_Input_Id]"
value="<%= widget.Price %>" />
</td>
</tr>
<% end foreach %>
</tbody>
</table>
<input type="submit" value="Save Changes" />
</form>
А на сервере на посту:
var widgetIdKeys = all keys in forms collection matching
pattern of mangled input Id for Widget.Id hidden input
foreach widgetIdKey in widgetIdKeys
find matching mangled input Id for Widget.Description text input
find matching mangled input Id for Widget.Price text input
if input changed per comparison to some original
persist Description and Price input for current widget Id
end if
end foreach
Эта проблема, без сомнения, была решена в течение длительного времени, но это единственный подход, который я могу придумать, и он кажется хакерским. Итак, мой вопрос: есть ли лучшая модель и если да, то как она выглядит? Если это единственный или предпочтительный способ сделать это, существуют ли правильные и неправильные способы обработки искажения и анализа входного идентификатора? Как насчет сравнения, чтобы определить, какие входные данные изменились? Я могу придумать способы решения этой проблемы на уровне строк или ячеек, и, возможно, эти способы существуют, потому что нет хорошего способа решения этой проблемы на уровне таблиц, но я также могу подумать о недостатках этих способов.
Или я вообще упускаю подходящую парадигму? Спасибо за любые идеи.