<h:commandLink>
/ <ice:commandLink>
сгенерирует элементы HTML <a>
с href на #
, которые используют JavaScript для отправки скрытой формы POST, поэтому в итоге все они имеют одинакового href, и поэтому при щелчке по одному из них все они будут отображаться как «посещенные».
Если вы действительно беспокоитесь о том, какая ссылка была нажата, значит, вы неявно беспокоитесь и о идемпотентности ссылки. В этом случае вы не должны использовать командные ссылки, а просто простые выходные ссылки, которые вы можете создать с помощью <h:outputLink>
или, если вы уже используете JSF2, с <h:link>
. Вы можете передавать параметры вложенным <f:param>
и вызывать действия в целевом представлении (например, для подготовки какого-либо объекта модели) с помощью <managed-property>
/ @PostConstruct
или, если вы уже находитесь в JSF2, с помощью <f:viewParam>
и <f:event type="preRenderView">
.
1018 * Е.Г. *
<h:dataTable value="#{bean.list}" var="item">
<h:column>
<h:outputLink value="edit.jsf">
<f:param name="id" value="#{item.id}" />
<h:outputText value="edit item #{item.id}" />
</h:outputLink>
</h:column>
</h:dataTable>
Таким образом, каждая ссылка будет уникальной и, следовательно, будет отображаться как «посещенная» только тогда, когда была нажата только действительная ссылка.