我在JSF 2.0项目中使用复合组件,并且希望将复合组件与以下组件组合在一起:

<ex:mycompositecomponent>
    <f:ajax event="change" render="anotherComponent" />
</ex:mycompositecomponent>

有什么办法吗?

#1楼 票数:0

应该。

以下代码值得一试:

<!-- mycompositecomponent.xhtml -->
    ...
    <composite:implementation>
      <h:inputText ...>
        <composite:insertChildren /> <!-- contents within <ex:mycompositecomponent>...</ex:mycom....> goes here -->
      </h:inputText>
    </composite:implementation>
    ...

现在,您可以使用mycompositecomponent.xhtml了。

#2楼 票数:0

我知道旧线程,但是您可以使用未记录的clientBehavior属性来实现。 此代码将keyup事件从ah:inputText映射到逻辑事件“ myevent”。 希望这是不言而喻的。

index.xhtml

<?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:sqcc="http://java.sun.com/jsf/composite/sqcc"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form id="mainform" prependId="false">
            <sqcc:testcomp value="#{indexBean.inputText1}">
                <f:ajax render=":mainform:echo1"/>
            </sqcc:testcomp>
            <h:outputText id="echo1" value="a:#{indexBean.inputText1}"/>
            <br/>
        </h:form>
    </h:body>
</html>

testcomp.xhtml

<?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">
<ui:component xmlns="http://www.w3.org/1999/xhtml"
              xmlns:cc="http://java.sun.com/jsf/composite"
              xmlns:h="http://java.sun.com/jsf/html"
              xmlns:f="http://java.sun.com/jsf/core"
              xmlns:ui="http://java.sun.com/jsf/facelets">

    <cc:interface>
        <cc:attribute name="value"/>
        <cc:clientBehavior name="myevent" default="true" event="keyup" targets="#{cc.clientId}:ccinput"/>
    </cc:interface>

    <cc:implementation>
        <h:outputLabel for="#{cc.clientId}:ccinput" value="Input: "/>
        <h:inputText id="ccinput" value="#{cc.attrs.value}"
                     autocomplete="off">
            <f:ajax event="keyup" render="#{cc.clientId}:ccoutput"/>
        </h:inputText>
        <h:outputText id="ccoutput" value="cc:#{cc.attrs.value}"/>
    </cc:implementation>
</ui:component>

IndexBean.java

package testAjaxCC;


import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class IndexBean implements Serializable {

    private String inputText1;
    private String inputText2;

    public IndexBean() {
    }

    public String getInputText1() {
        return inputText1;
    }

    public void setInputText1(String inputText1) {
        this.inputText1 = inputText1;
    }

    public String getInputText2() {
        return inputText2;
    }

    public void setInputText2(String inputText2) {
        this.inputText2 = inputText2;
    }

}

  ask by Jonathan Frank translate from so

未解决问题?本站智能推荐:

1回复

外f:ajax用于复合组件

有没有一种方法可以创建可以从外部接收<f:ajax>标记的复合组件? 我正在创建一个editableText输入复合组件,我想向最终用户展示在组件的输入标签内附加<f:ajax>标签的选项。 有没有一种使用复合组件的方法? EditableValueHolder
1回复

更新复合组件?

如何告诉复合组件应该更新另一个抄送? 我尝试给第一个抄送给一个抄送的“更新”属性。 然后,我用该ID注释了snd cc。 显然也找到了ID,因为我已经可以启动页面了。 但是点击按钮:什么也没有发生! 输入抄送: JSF: 有人知道如何在cc输入表单按钮内正确
1回复

使用ajax时如何识别Java Server Faces 2.0复合组件?

我具有以下Java Server Faces 2.0复合组件。 请注意,我使用逐字记录 为了使用ajax,我已经做了(Notice render属性) 我的CustomerSearchController如下所示 CustomerSearchController和Cus
2回复

复合组件侦听器仅在页面重新加载后工作

我有一个网页,其中包含一个子页面,该子页面根据我在primefaces停靠菜单中选择的元素( ui:include )进行更改。 一些子页面包括我实现的自定义复合组件。 Web应用程序显示的第一页让所有听众都能正常工作。 当我通过停靠菜单更改子页面时,VideoStatusTable的侦听
3回复

JSF 2.0:使用请求范围的Bean呈现具有初始数据的表单字段(以更新特定于当前组件的服务器数据)

一个很正常的情况: 我们有一个“ portlet”复合组件,具有两个状态:展开和折叠。 Portlet从扩展开始,但是用户可以通过单击将它们折叠。 此状态应该保存到会话中,以便一旦用户刷新页面或导航到新的portlet,Portlet就会记住它们是否已展开/折叠。 这是问题的核心
1回复

如何将ajax事件附加到复合组件?

我有以下复合组件(<v2:inputText2>) 在下面的片段中,我想使用以下方法向此组件添加<a4j:ajax>事件: 当我调用Testpage时,我得到以下错误: 我该如何解决这个问题? Ajax-Event应该触发UI-Bean-Me
1回复

切换复合组件布尔变量的Ajax调用似乎只起作用一次

我有一个非常简单的复合组件,单击该组件即可在两个图像之间来回切换。 当我第一次单击它时,它可以正常工作。 此后每次都没有任何反应。 会调用“ toggleSingleSelect”,但不会重新渲染面板本身。 singleMultiSelectText.xhtml: singl
1回复

当我添加clientBehavior时,复合组件中的ajax侦听器停止工作

我有这个复合组件,它运行完美。 但是我想从此组件外部收听“ change”事件。 因此,我在cc:interface中使用了“ cc:clientBehavior”。 为了进行测试,我添加了几个“ console.out”。 首先,我更新了复合组件: 以及我将如何使用它