JSF复合传递所有事件
我想用JSF(带primefaces)创建我的定制复合组件,它在输入前显示一个标签,并在最后添加一条消息 为此,以下是我的源代码: 复合材料:JSF复合传递所有事件,jsf,events,inheritance,primefaces,composite-component,Jsf,Events,Inheritance,Primefaces,Composite Component,我想用JSF(带primefaces)创建我的定制复合组件,它在输入前显示一个标签,并在最后添加一条消息 为此,以下是我的源代码: 复合材料: <?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"&g
<?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:p="http://primefaces.org/ui"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface componentType="customInput">
<composite:attribute name="label" />
<composite:attribute name="value" />
</composite:interface>
<composite:implementation>
<h:panelGrid columns="3">
<h:outputText value="#{cc.attrs.label}:" />
<p:inputText id="abcde" value="#{cc.attrs.value}" />
<p:message for="abcde" />
</h:panelGrid>
</composite:implementation>
</html>
到目前为止,一切顺利。现在我想使用p:inputText组件继承的事件。例如:
<pch2:PchInputText2 label="Name" id="test2" value="#{testBean.test}">
<p:ajax event="blur" listener="#{chantierFormBean.updateMap()}" />
<p:ajax event="change" listener="#{chantierFormBean.updateMap()}" />
</pch2:PchInputText2>
我知道我可以通过添加
<composite:clientBehavior name="change" event="change" targets="abcde" />
对于composite:interface部分,但是我必须为每个事件(将来)添加一个客户端行为。是否有一种方法可以传递primefaces inputtext继承的所有事件
提前谢谢这是不可能的
首先,组合不是此作业的正确工具。它的主要目的不是使重复的XHTML代码干涸和重构。它旨在创建一个与单个模型值关联的全新(输入)组件。例如,将
和
绑定到单个com.example.Image
属性。或者将三个
绑定到一个java.time.LocalDate
属性
改为使用标记文件
<ui:composition ...>
<h:outputLabel for="#{id}" value="#{label}:" />
<p:inputText id="#{id}" value="#{value}">
<ui:insert />
</p:inputText>
<p:message for="#{id}" />
</ui:composition>
另见:
rendered=“#{rendered ne false}”
。在复合中没有什么不同,只有tagfile不需要像样板一样的
。是的,但是我必须为我想要使用的每个属性都这样做。我希望有一种更简单的方法来继承所有属性。我想我必须重新定义所有属性。谢谢你的帮助
<ui:composition ...>
<h:outputLabel for="#{id}" value="#{label}:" />
<p:inputText id="#{id}" value="#{value}">
<ui:insert />
</p:inputText>
<p:message for="#{id}" />
</ui:composition>