Диалоговая структура не закрывается, когда у нее есть поле ввода
Я пытаюсь закрыть диалог кнопкой отмены, я получаю событие, но диалог не закрывается. После долгих копаний я понимаю, что проблема в том, что в диалоговом окне есть поле ввода с описанием заявки, но оно работает, когда я его удаляю и оставляю только кнопки de.
Есть ли смысл?
Форма базового кода
...
<p:commandButton icon="fa fa-bug" actionListener="#{ticketBean.viewTicket}"/>
...
Код TicketBean
@ManagedBean
@ViewScoped
public class TicketBean {
...
public void viewTicket() {
logger.info("--------------ViewTicket");
Map<String, Object> options = new HashMap<>();
options.put("modal", true);
options.put("width", 640);
options.put("height", 250);
options.put("resizable", false);
options.put("contentWidth", "100%");
options.put("contentHeight", "100%");
options.put("closable", false);
RequestContext.getCurrentInstance().openDialog("maintenance/ticket", options, null);
}
public void cancel() {
RequestContext.getCurrentInstance().closeDialog(null);
}
...
Диалоговый код ticket.xhtml НЕ РАБОТАЕТ
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>#{msgs.ticket_create}</title>
</h:head>
<h:body>
<h:form id="frmTicket">
<p:inputTextarea rows="5" cols="70" value="#{ticketBean.ticket.descripcio}" >
</p:inputTextarea>
<br/>
<h:inputHidden value="#{ticketBean.ticket.path}" />
<p:commandButton value="#{msgs.save}" style="width:auto"
styleClass="GreenButton"
actionListener="#{ticketBean.save}"/>
<p:commandButton value="#{msgs.cancel}" style="width:auto"
styleClass="RedButton"
actionListener="#{ticketBean.cancel}"/>
</h:form>
</h:body>
</html>
Диалоговый код ticket.xhtml РАБОТАЕТ
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>#{msgs.ticket_create}</title>
</h:head>
<h:body>
<h:form id="frmTicket">
<p:commandButton value="#{msgs.save}" style="width:auto"
styleClass="GreenButton"
actionListener="#{ticketBean.save}"/>
<p:commandButton value="#{msgs.cancel}" style="width:auto"
styleClass="RedButton"
actionListener="#{ticketBean.cancel}"/>
</h:form>
</h:body>
</html>
Лица-config.xml
...
<application>
<action-listener>
org.primefaces.application.DialogActionListener
</action-listener>
<navigation-handler>
org.primefaces.application.DialogNavigationHandler
</navigation-handler>
<view-handler>
org.primefaces.application.DialogViewHandler
</view-handler>
</application>
...
web.xml
...
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
...
1 ответ
Решение
Решение состоит в том, чтобы изменить код
<p:inputTextarea rows="5" cols="70" value="#{ticketBean.ticket.descripcio}" >
</p:inputTextarea>
для этого
<h:inputTextarea rows="5" cols="70" value="#{ticketBean.ticket.descripcio}" >
</h:inputTextarea>
Проблемы, кажется, с копонентом p: inputTextarea
* Возможные ошибки 6