Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf ui:导致支持bean不更新的片段?_Jsf_Primefaces_Composite Component - Fatal编程技术网

Jsf ui:导致支持bean不更新的片段?

Jsf ui:导致支持bean不更新的片段?,jsf,primefaces,composite-component,Jsf,Primefaces,Composite Component,我有一个复合组件,它基于下拉列表(STREET,PO BOX)中选择的内容呈现另一个复合组件streetAddressUpdate或postalBoxAddressUpdate。这是密码 <?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-tran

我有一个复合组件,它基于下拉列表(STREET,PO BOX)中选择的内容呈现另一个复合组件streetAddressUpdate或postalBoxAddressUpdate。这是密码

<?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:cc="http://java.sun.com/jsf/composite"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:tad="http://java.sun.com/jsf/composite/tmr/ad"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:tmi="http://java.sun.com/jsf/composite/tmr/mi">

<!-- INTERFACE -->
<cc:interface>
    <cc:attribute
        name="title"
        default="Postal address" />
    <cc:attribute
        name="postalAddress"
        type="qdtmr.comp.cbui.address.fieldmodel.PostalAddress"
        default="#{addressUpdate.postalAddress}"
        required="true" />
 </cc:interface>
<cc:implementation>
<ol class="questions">

    <!-- Postal address type -->
    <li><h:outputLabel for="postalAddressType">
            <span class="label">#{tcum.postalAddressType}</span>
        </h:outputLabel> <p:selectOneMenu
            id="postalAddressType"
            value="#{cc.attrs.postalAddress.postalAddressType}"
            valueChangeListener="#{addressUpdate.changePostalAddress}">
            <f:selectItems value="#{addressController.postalAddressTypesList}" />
            <p:ajax
                update=":#{cc.clientId}:postalAddressPanel, :#{cc.clientId}:poBoxPanel" />
        </p:selectOneMenu></li>

    <p:outputPanel id="postalAddressPanel">
        <ui:fragment rendered="#{cc.attrs.postalAddress.postalAddressType == 'STREET'}">
            <tad:streetAddressUpdate
                streetAddress="#{cc.attrs.postalAddress.postalStreetAddress}"
                title="" />
        </ui:fragment>
    <p:outputPanel id="poBoxPanel">
        <ui:fragment rendered="#{cc.attrs.postalAddress.postalAddressType == 'POBOX'}">
            <tad:postalBoxAddressUpdate
                postalBoxAddress="#{cc.attrs.postalAddress.postalBoxAddress}" />
        </ui:fragment>
    </p:outputPanel>
</ol>
</cc:implementation>
</html>

  • #{tcum.postalAddressType}
  • 让我困惑的是,如果我去掉ui:fragment标记,我在页面上的值会返回到PostalStreatAddress/postalBoxAddress模型bean,但是如果在它们的ui:fragment中,我的值最终不会返回到PostalStreatAddress/postalBoxAddress

    我之所以有ui:fragment,是因为根据PostalPressType,将使用postalBoxAddressUpdate复合组件或PostalStreamAddressUpdate组件

    任何帮助都将不胜感激。我怀疑是ui:fragment


    编辑:我检查了一下,取出了ui:fragment,它似乎就是罪魁祸首。我真的很想了解发生了什么

    所以,bean不在视图范围内?嗨,巴卢斯克,谢谢你花时间。不,bean是RequestScopedPolicys,但PostalStreatAddress和PostalBoxAddress bean都在请求范围内。我可以记录这些值,并查看它们在APPLY\u请求参数映射中是否可用,但这些值永远不会进入调用应用程序所需的bean中。这是视图范围内的表单submissionPut bean。如果这样做有效,您的请求作用域模型保留逻辑将被破坏。有关说明,请参见单击链接的第5点。