在视图中找不到具有标识符的组件

时间:2012-05-30 09:22:28

标签: jsf primefaces

我遇到的问题是,当我尝试更新不在同一个xhtml中的组件时。

有人知道该怎么办?

THX PD:我正在使用primefaces 3.2

抱歉我的英文

我认为我不能很好地解释。

我有一个带有tis结构的xhtml父亲:

<h:panelGrid id="tabla">

    <h:form id="formTripu" prependId="false">
        <h:panelGrid id="fichaTripulante">
            <ui:include src="path1" />
            <p:spacer height="5px" />
            <p:tabView dynamic="false" cache="true">
                <p:tab title="#{bundleTrip.datosAdministrativos}">
                    <ui:include
                        src="path2" />
                </p:tab>
                <p:tab title="Datos Operativos ">
                    <ui:include
                        src="path3" />
                </p:tab>

    

我希望做的是例如在path1中我使用h:selectBooleanCheckbox之类的:

                    <h:selectBooleanCheckbox inmediate="true" id="checkExt"
                        value="#{bean.Obj.field}">
                        <f:ajax render="estadoTripu"
                            actionListener="#{bean.method}" />
                    </h:selectBooleanCheckbox>

estadoTripu位于path2(otherxthml,但形式相同)。

<p:panel>
    <h:panelGrid id="datos" columns="5">
        <p:column>

                <h:selectOneMenu id="estadoTripu" 
                    value="#{bean.Obj.Field2}">
                    <f:selectItems
                        value="#{bean.list}" var="item"
                        itemValue="#{item.id}" immediate="true"
                        itemLabel="#{item.desc}">
                    </f:selectItems>
                </h:selectOneMenu>
            </h:panelGrid>
        </p:column>
    </h:panelGrid>
</p:panel>  

女巫在渲染中扮演a:ajax ????

thx everyone

3 个答案:

答案 0 :(得分:1)

试试这个:(这是我从BalusC学到的一个技巧:))

binding="#{components.mySelecOneMenu}"添加到您的h:selectOneMenu

<h:selectOneMenu binding="#{components.mySelecOneMenu}" .....

这个按钮的样子(或多或少)

<h:commandButton value="doSomeThing">
    <f:ajax render="#{components.mySelecOneMenu.clientId}"/>
</<h:commandButton>

将此添加到您的faces-config.xml

<managed-bean>
    <description>Holder of all component bindings.</description>
    <managed-bean-name>components</managed-bean-name>
    <managed-bean-class>java.util.HashMap</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

这里有一些我建议你做的详细解释

How do I break the tyranny of the clientID?

JSF component binding without bean property

答案 1 :(得分:0)

如果它们不在同一个xhtml中,你是否在另一个中包含一个?如果没有,只需更改页面,它就会显示正确的页面。

但我认为我没有正确理解你的问题。

请添加一些代码

答案 2 :(得分:0)

我发现组件应该是相同的形式,一个调用id从表单开始到组件,它首选每个panelgrid,panel等的id,因为你必须调用你想要渲染的每个组件englobe comoponent。