Jsf 2 JSF在f:ajax中对组件进行分组
我通过ui:include-befordability.xhtml将JSF页面加载到主页中。 我的问题是当页面第一次加载时不会触发f:ajaxonblur事件。如果我刷新页面,那么ajax onblur事件将正常启动 问题是否与f:ajax标记在第一次加载时找不到execute标记中列出的组件有关?我没有收到任何js错误或java/jsf异常抛出。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标记中对组件进行分组 另一个奇怪的问题是,输入组件都保持焦点,即您可以单击多个输入框,它们都保持在“焦点”
根据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告诉我们,在页面第一次加载之后,Ajaxblur
事件根本不起作用。也就是说,当最终用户离开字段时,永远不会调用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 ="...