Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 2 JSF在f:ajax中对组件进行分组_Jsf 2_Primefaces_Onblur - Fatal编程技术网

Jsf 2 JSF在f:ajax中对组件进行分组

Jsf 2 JSF在f:ajax中对组件进行分组,jsf-2,primefaces,onblur,Jsf 2,Primefaces,Onblur,我通过ui:include-befordability.xhtml将JSF页面加载到主页中。 我的问题是当页面第一次加载时不会触发f:ajaxonblur事件。如果我刷新页面,那么ajax onblur事件将正常启动 问题是否与f:ajax标记在第一次加载时找不到execute标记中列出的组件有关?我没有收到任何js错误或java/jsf异常抛出。 根据JavaEE6文档,可以在f:ajax标记中对组件进行分组 另一个奇怪的问题是,输入组件都保持焦点,即您可以单击多个输入框,它们都保持在“焦点”

我通过ui:include-befordability.xhtml将JSF页面加载到主页中。 我的问题是当页面第一次加载时不会触发f:ajaxonblur事件。如果我刷新页面,那么ajax onblur事件将正常启动

问题是否与f:ajax标记在第一次加载时找不到execute标记中列出的组件有关?我没有收到任何js错误或java/jsf异常抛出。
根据JavaEE6文档,可以在f:ajax标记中对组件进行分组

另一个奇怪的问题是,输入组件都保持焦点,即您可以单击多个输入框,它们都保持在“焦点”状态

在下图中,我“选择”了6个输入框。

befordability.xhtml如下所示:

        <h:panelGrid columns="2" style="font-size: 80%" id="incomePanel">
            <f:facet name="header"><h:outputText value="Income"/></f:facet>

            <f:ajax event="blur" execute="netSalary otherSalary" render="totalIncome affordabilityBreakdown">
                <h:outputText value="Net salary as per Payslip"/>
                <p:inputText id="netSalary" style="width:250px;" value="#{campaignBean.validBatchLead.lead.leadAffordability.incNetSalary}" required="true" requiredMessage="Please enter the Net Salary"/>                    

                <h:outputText value="Other"/>
                <p:inputText id="otherSalary" style="width:250px;" value="#{campaignBean.validBatchLead.lead.leadAffordability.incOther}" required="false"/>

                <h:outputText value="Total" style="font-weight: bold; float: right"/>
                <h:outputText id="totalIncome" value="#{campaignBean.validBatchLead.lead.leadAffordability.declaredIncome}">
                    <f:convertNumber minFractionDigits="2" maxFractionDigits="2"/>
                </h:outputText>
            </f:ajax>

        </h:panelGrid>

        <h:panelGrid columns="2" style="font-size: 80%; border: 1px dashed lightgray" id="affordabilityBreakdown">

            <h:outputText value="Provisional Calculation" style="font-weight: bold;"/>
            <h:outputText value="#{campaignBean.validBatchLead.lead.leadAffordability.provisional}">
                <f:convertNumber minFractionDigits="2" maxFractionDigits="2"/>
            </h:outputText> 

            <h:outputText value="Projected Expenses" style="font-weight: bold;"/>
            <h:outputText value="#{campaignBean.validBatchLead.lead.leadAffordability.projectedExpenses}">
                <f:convertNumber minFractionDigits="2" maxFractionDigits="2"/>
            </h:outputText>                

            <h:outputText value="Disposable Income" style="font-weight: bold; background: #EE0000;"/>
            <h:outputText value="#{campaignBean.validBatchLead.lead.leadAffordability.disposableIncome}" 
                          style="font-weight: bold; background: #EE0000">
                <f:convertNumber minFractionDigits="2" maxFractionDigits="2"/>
            </h:outputText>
        </h:panelGrid>


加载页面时,您试图如何处理onblur事件?目的是填充字段吗?如果是这样的话,你可以用应该是EE6。J2EE指的是5之前的企业java版本。替代方法(我试图避免)是在每个p:inputText中添加一个ajax标记。这确实有效,但是这是一个混乱的解决方法,因为页面包含25个p:inputText标记。类似的东西可能会归结为一些可笑的事情,例如,您是否观察到跨浏览器的这种行为(可能是浏览器的怪癖)?你绝对确定这与你正在测试的特定PC无关吗?还有,让我们看看你的Primefaces版本。尝试升级到最新版本(目前为3.4.1),因为您不了解具体问题。OP告诉我们,在页面第一次加载之后,Ajax
blur
事件根本不起作用。也就是说,当最终用户离开字段时,永远不会调用
blur
事件。它只有在页面刷新后才能工作。OP根本没有问如何在页面加载时执行一些逻辑。@BalusC我在写的时候回答了这个问题。他问为什么ajax在页面首次加载时没有启动。当页面第一次加载时。如果重点是onblur根本不起作用,他可以明确地说。我还要求澄清他想做什么以及为什么,然后提供了一种在页面首次加载时处理数据的替代方法。也许你对他的意思的假设是对的。没有澄清,我们就不知道了。但至少我提供了一个符合实际要求的答案。如果代码没有错,那么否决票就是。
<body>
    <ui:define name="metadata">
        <f:view>
            <f:metadata>
                <f:event type="preRenderView" listener="#{campaignBean.init}" />
            </f:metadata>
        </f:view>
    </ui:define>

<ui:composition template ="...