2
是技術問題與JSF 2.2
我們正在開發一個應用J2E用JSF 2.2和IBM形態的動態負荷爲8.5.5。
問題
我們以加載不同的形式(包括Ajax和其他子窗體... 12組型動物的形式)開發的屏幕。我們希望能夠使用「ui:include」標籤在Ajax的模式框中動態加載表單。
不幸的是,與那些動態生成的表單相關的操作不會被執行。
的問題
- 難道有人有這個問題前面?
- 你有解決問題的線索嗎?
- 你知道在同一頁面加載動態表單的替代方法嗎?
代碼
我們構建出我們有問題,一個簡單的例子。
主頁(片段)
<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;
}
}
注意
使用 「UI:片段」 元素是不可用的。對我們來說,生成頁面需要將近一分鐘,而使用完整的ajax則需要將近2,3秒。 所以下面的例子不適合我們。
<ui:fragment rendered="#{index.page eq 'page2'}">
<ui:include src="page2.xhtml"/>
</ui:fragment>