#javascript #jsf #primefaces
#javascript #jsf #первичные пространства
Вопрос:
Я пытаюсь отобразить / не отображать данные primefaces, используя тег update в primefaces.
Таблица будет отображаться правильно при перезагрузке (F5) страницы, но тогда я потеряю все данные, которые я ввел в форму. Я искал решение ajax, но пока мне не удалось его найти.
Мой код:
<h:form id="adminForm">
<h:selectOneMenu id="adminTypeMenu" value="#{adminBean.orgType}">
<f:selectItem itemValue="" itemLabel="- Select One -"/>
<p:ajax actionListener="#{adminBean.updateOrgType}" update="adminForm" />
</h:selectOneMenu>
<p:dataTable id="adminMacTable" value="#{adminBean.currentArray}" var="currentOrg"
rendered="#{adminBean.Type eq 'bco'}" selection="#{adminBean.selectedMac}"
emptyMessage="No Records Found">
...
</p:dataTable>
</h:form>
Текущая реализация отображает DataTable, но стирает все входные данные формы, которые у меня были. Есть ли способ отобразить datatable без очистки значений моей формы?
Обновление: Просто попробовал тот же код без и использовал, но получил тот же результат, все еще пробуя другие методы!
Комментарии:
1. В какой области находится ваш adminBean?
2.
#{adminBean.Type}
Недопустимо. Разве это не должно быть#{adminBean.type}
? Ты пробовалupdate="adminMacTable"
?3. извините, я изменил часть кода, когда вставлял его, спасибо за уловку 🙂
Ответ №1:
Попробуйте это:
<h:form id="adminForm" prependId="false">
<h:selectOneMenu id="adminTypeMenu" value="#{adminBean.orgType}">
<f:selectItem itemValue="" itemLabel="- Select One -"/>
<p:ajax actionListener="#{adminBean.updateOrgType}" update="adminMacOutput" />
</h:selectOneMenu>
<p:outputPanel id="adminMacOutput">
<p:dataTable id="adminMacTable" value="#{adminBean.currentArray}" var="currentOrg"
rendered="#{adminBean.Type eq 'bco'}" selection="#{adminBean.selectedMac}"
emptyMessage="No Records Found">
...
</p:dataTable>
</p:outputPanel>
</h:form>
Если это не сработает, попробуйте поместить datatable в отдельную форму и обновить эту вторую форму.
Комментарии:
1. p: outputPanel была правильным решением! На самом деле я использовал это раньше, но забыл о том, насколько это было полезно :). Спасибо!
Ответ №2:
Я предполагаю, что AdminBean может находиться в области запроса, и в этом случае ваше событие ajax обновит его, но затем оно будет воссоздано при нажатии F5. Если это так, то ViewScoped поможет:
@ManagedBean(name = "adminBean")
@ViewScoped
public class AdminBean {
}
Комментарии:
1. В настоящее время реализация ограничена рамками диалога, я просто попробовал то же самое еще раз, но с p: panel вместо формы. К сожалению, такое же поведение: (