JSF Composite传递所有事件



我想在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">
<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>

后台bean:

@FacesComponent(value = "customInput")
public class CustomInput extends InputText implements NamingContainer {
    @Override
    public String getFamily() {
        return UINamingContainer.COMPONENT_FAMILY;
    }
}

到目前为止,一切顺利。现在我想使用由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" />

添加到复合:接口部分,但是我必须为每个事件添加一个客户端行为(在将来)。有没有一种方法可以传递所有由primefaces inputtext继承的事件?

Thanks in advance

这是不可能的。

复合材料首先不是适合这项工作的工具。它的主要目的不是删除和重构重复的XHTML代码。它的目的是创建一个与单个模型值绑定的全新(输入)组件。例如,一个<p:fileUpload><p:imageCropper>一起绑定到一个com.example.Image属性。或者三个<p:selectOneMenu>结合到一个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>

参见:

    如何使JSF复合组件的网格?
  • 何时使用,标签文件,复合组件和/或自定义组件?

相关内容

  • 没有找到相关文章

最新更新