технический контекстДинамическая загрузка форм с JSF 2.2
Мы разрабатываем приложение J2E с JSF 2.2 и IBM WAS 8.5.5.
Проблема
Мы разработали экран для того, чтобы загрузить различные формы (12 Differents формы, которые включают в себя Ajax и другие подчиненной ...). Мы хотим иметь возможность динамически загружать форму в модальном поле в Ajax, используя тег «ui: include».
К сожалению, действия, связанные с этими формами, генерируемыми динамически, не выполняются.
Вопросы
- Сделай кого-нибудь имел эту проблему раньше?
- У вас есть подсказка, чтобы решить эту проблему?
- Знаете ли вы, что альтернатива для загрузки динамических форм на одной странице?
Код
Мы построили простой пример, показывающий эту проблему мы имеем.
Основная страница (фрагмент)
<ui:composition template="/WEB-INF/templates/globalLayout.xhtml">
<ui:param name="context" value="publication"/>
<ui:define name="content">
<h:form>
<h:commandLink value="EDIT1"
action="#{test.edit()}" layout="block" >
</h:commandLink>
<h:commandLink value="EDIT2"
action="#{test.edit2()}" layout="block" >
</h:commandLink>
<ui:include src="#{test.page}"/>
</h:form>
</ui:define>
</ui:composition>
субстраницу 1 (фрагмент)
<h:outputText value="Page 1 "></h:outputText>
<h:commandLink value="EDIT1" action="#{test.edit()}" layout="block" >
</h:commandLink>
<h:commandLink value="EDIT2" action="#{test.edit2()}" layout="block" >
</h:commandLink>
субстраницу 2 (фрагмент)
<h:outputText value="Page 2 "></h:outputText>
<h:commandLink value="EDIT1" action="#{test.edit()}" layout="block" >
</h:commandLink>
<h:commandLink value="EDIT2" action="#{test.edit2()}" layout="block" >
</h:commandLink>
Управляемая Bean
package com.myapp;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean(name = "test")
@ViewScoped
public class TestManagedBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = -3750906342500909173L;
private String page;
public void edit() {
page = "page.xhtml";
}
public void edit2() {
page = "page2.xhtml";
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
}
Примечание
Использование: элемент "щ фрагмент" не пригодной к использованию. Для нас это занимает около одной минуты, чтобы сгенерировать страницу, тогда как с полным ajax это займет около 2,3 секунд. Итак, пример ниже не работает для нас.
<ui:fragment rendered="#{index.page eq 'page2'}">
<ui:include src="page2.xhtml"/>
</ui:fragment>