JSF: Есть ли способ создать эффект анимации при вставке новой записи в таблицу?
-
04-10-2019 - |
Вопрос
Я много гудели этот вопрос, и я не нахожу решение. Интересно, если бы какой-нибудь разработчик там, который может достичь этого? Я знаю, что есть пара Ajax Framework для JSF, таких как Richfaces, Pramefaces, Icefaces ... Я посмотрел на свою витрину, и, кажется, не мог найти то, что я ищу.
Решение
Вот как это будет работать для h:dataTable
Предполагая, что мы всегда добавляем к таблице:
<h:form>
<h:panelGroup id="animatedTableGroup">
<h:dataTable id="animatedTable" value="#{myBean.rows}" var="row">
<h:column>
<h:outputText value="#{row}"/>
</h:column>
</h:dataTable>
<rich:jQuery timing="onload"
selector="#animatedTable tr:last" query="fadeOut('slow')"/>
<rich:jQuery timing="onload"
selector="#animatedTable tr:last" query="fadeIn('slow')"/>
</h:panelGroup>
<a4j:commandButton value="Add row"
action="#{myBean.addRow}" reRender="animatedTableGroup"/>
</h:form>
И боб:
public void addRow() {
rows.add(new Date().toString());
}
public List<String> getRows() {
return rows;
}
Если вы хотите вставить в выбранную позицию в таблице, то лучше использовать rich:extendedDataTable
И используйте что-то вроде этого, как селектор:
<rich:jQuery timing="onload"
selector="#animatedTable tr.rich-sdt-row-selected" query="..."/>
Другие советы
Richfaces имеет родную поддержку для jquery с использованием rich:jQuery
компонент. Вы можете использовать любые эффекты, которые jquery Поддерживает. Например:
<h:commandButton id="submitButton" value="Submit"
action="#{myBean.myAction}" style="display: none;"/>
<rich:jQuery selector="#submitButton"
query="fadeIn('slow')" timing="onload">
или
<h:commandButton id="submitButton" value="Submit"
action="#{myBean.myAction}"
onmouseover="jQuery(this).fadeOut('slow');"
onmouseout="jQuery(this).fadeIn('slow')"/>
Вы можете найти больше примеров здесь: http://docs.jboss.org/richfaces/latest_3_3_x/en/devguide/html/rich_jquery.html.