回发后以编程方式加载复合消失元素
Programmatically loaded composite disappear elements after postback
在我的项目中,我以编程方式将复合组件添加到 primefaces p:panel,如下所述:How to programmatically or dynamically create a composite component in JSF 2 .
这是复合组件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:p="http://primefaces.org/ui">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:panelGroup styleClass="ui-grid ui-grid-responsive"
id="myPG" layout="block">
<div class="ui-grid ui-grid-responsive label-777777">
<div class="ui-grid-row">
<div class="ui-grid-col-11-5">
<label>#{msgs['label.content']}</label>
</div>
</div>
</div>
<p:commandButton styleClass="myButton blueButton"
id="myCompositeButton" value="#{msgs['button.elimina']}"
update="@form"
actionListener="#{myController.onMyClick}" />
</h:panelGroup>
</composite:implementation>
</html>
添加到页面时显示正常,但在按钮回发后,"div" 部分消失(未发送到浏览器)。
如果我用 h:panelGroup 和 h:outputlabel 实现 div,元素会呈现但为空(#{msgs['label.content']} 无效)。
这是 onMyClick 处理程序(其中没有逻辑):
public void onMyClick()
{
System.out.println("#########################################CALLBAK");
}
我哪里错了?
Primefaces 版本为 5.1,运行 JBoss AS 7.1.1
由于我在目标架构上以编程方式创建组件时遇到问题(IBM WAS 8.5,myfaces 2.0,不,我无法更改 jsf 实现),我改变了方法,使用支持 bean 绑定 ui:include 在 h:panelGroup
中
<h:panelGroup id="myPanel" layout="block" rendered="#{myController.moduleSelected }">
<ui:include src="#{myController.moduleType}"></ui:include>
</h:panelGroup>
发布答案以帮助其他用户
在我的项目中,我以编程方式将复合组件添加到 primefaces p:panel,如下所述:How to programmatically or dynamically create a composite component in JSF 2 .
这是复合组件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:p="http://primefaces.org/ui">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:panelGroup styleClass="ui-grid ui-grid-responsive"
id="myPG" layout="block">
<div class="ui-grid ui-grid-responsive label-777777">
<div class="ui-grid-row">
<div class="ui-grid-col-11-5">
<label>#{msgs['label.content']}</label>
</div>
</div>
</div>
<p:commandButton styleClass="myButton blueButton"
id="myCompositeButton" value="#{msgs['button.elimina']}"
update="@form"
actionListener="#{myController.onMyClick}" />
</h:panelGroup>
</composite:implementation>
</html>
添加到页面时显示正常,但在按钮回发后,"div" 部分消失(未发送到浏览器)。
如果我用 h:panelGroup 和 h:outputlabel 实现 div,元素会呈现但为空(#{msgs['label.content']} 无效)。
这是 onMyClick 处理程序(其中没有逻辑):
public void onMyClick()
{
System.out.println("#########################################CALLBAK");
}
我哪里错了?
Primefaces 版本为 5.1,运行 JBoss AS 7.1.1
由于我在目标架构上以编程方式创建组件时遇到问题(IBM WAS 8.5,myfaces 2.0,不,我无法更改 jsf 实现),我改变了方法,使用支持 bean 绑定 ui:include 在 h:panelGroup
中<h:panelGroup id="myPanel" layout="block" rendered="#{myController.moduleSelected }">
<ui:include src="#{myController.moduleType}"></ui:include>
</h:panelGroup>
发布答案以帮助其他用户