Jsf 从托管bean调用函数并在完成后将焦点设置为所需组件
我有一个Jsf 从托管bean调用函数并在完成后将焦点设置为所需组件,jsf,primefaces,Jsf,Primefaces,我有一个p:commandButton,它从托管bean调用一个方法。我想再增加一个功能。因此,在调用该特定函数后,我想将焦点设置为ap:selectOneMenu 我的代码是: <p:selectOneMenu id="particulars" filter="true" filterMatchMode="startsWith" value="#{receiptMB.selectedFeeSchemeDetail.pla
p:commandButton
,它从托管bean调用一个方法。我想再增加一个功能。因此,在调用该特定函数后,我想将焦点设置为ap:selectOneMenu
我的代码是:
<p:selectOneMenu id="particulars" filter="true"
filterMatchMode="startsWith"
value="#{receiptMB.selectedFeeSchemeDetail.planId}"
style="width:120px !important;">
<f:selectItem itemLabel="Select" itemValue="" />
<f:selectItems value="#{receiptMB.incomeSchemes}" var="acc"
itemLabel="#{acc.feeInstallment}" itemValue="#{acc.planId}" />
<p:ajax event="change"
listener="#{receiptMB.onIncomeSourceSelect()}"
update=":messageGrowl :receiptEntryForm:planId
:receiptEntryForm:newVouchDetails txtQty totalAmount
particulars :receiptEntryForm:planId :receiptEntryForm:receiptSource
advAmtRemaining advCheckBox amtPaid" />
</p:selectOneMenu>
<p:commandButton value="#{bundle.add}" icon="ui-icon-plus"
partialSubmit="true" process="jvPanel autoCompleteData"
id="addVoucher" actionListener="#{receiptMB.loadTableData}"
update=":messageGrowl cmdSave :receiptEntryForm:newVouchDetails
txtQty totalAmount
particulars :receiptEntryForm:planId :receiptEntryForm:receiptSource
advAmtRemaining advCheckBox amtPaid">
</p:commandButton>
请向我推荐一些解决方案。您可以在操作方法中使用RequestContext,如下所示:
RequestContext context = RequestContext.getCurrentInstance();
context.scrollTo("receiptEntryForm:particulars");
您可以签出primefaces文档和showcase以获取更多信息。您可以在操作方法中使用RequestContext,如下所示:
RequestContext context = RequestContext.getCurrentInstance();
context.scrollTo("receiptEntryForm:particulars");
您可以查看primefaces文档和showcase以了解更多信息。首先,您应该正确设置代码格式。使它更容易阅读。谢谢。代码中也有很多噪音,与具体问题无关,因此会分散潜在回答者的注意力。好的,我将尝试简化它。您正在通过使用
update
属性手动指定组件的ID来更新很多组件。将它们收集并包含到容器组件(如
)中,并使用update
属性指定其id
)将更好地简化代码。首先,您应该正确格式化代码。使它更容易阅读。谢谢。代码中也有很多噪音,与具体问题无关,因此会分散潜在回答者的注意力。好的,我将尝试简化它。您正在通过使用update
属性手动指定组件的ID来更新很多组件。将它们收集并包含到容器组件(如
)中,并使用update
属性指定其id
)将更好地简化代码。首先,您应该正确格式化代码。使它更容易阅读。谢谢。代码中也有很多噪音,与具体问题无关,因此会分散潜在回答者的注意力。好的,我将尝试简化它。您正在通过使用update
属性手动指定组件的ID来更新很多组件。将它们收集并包含到容器组件(如
)中,并使用update
属性指定其id
,可以更好地简化代码。我不确定它为什么不起作用,但可能与我可能键入了selectonemenu位置错误有关,确保作为参数传递给上下文的路径正确。scrollTo(“”);当您设置正确的路径参数时,它确实起作用了吗?您能粘贴您在context.scrollTo方法中尝试的内容吗?selectoneMenu组件是否在另一个容器(如tabView或accordionPanel)中?我按照您的建议粘贴了。selectOneMenu位于面板内。scrollTo需要一个clientId,因此请删除前导冒号。我不确定它为什么不起作用,但可能与我键入selectOneMenu位置错误有关,请确保将正确的路径作为参数传递给上下文。scrollTo(“”);当您设置正确的路径参数时,它确实起作用了吗?您能粘贴您在context.scrollTo方法中尝试的内容吗?selectoneMenu组件是否在另一个容器(如tabView或accordionPanel)中?我按照您的建议粘贴了。selectOneMenu位于面板内。scrollTo需要一个clientId,因此请删除前导冒号。我不确定它为什么不起作用,但可能与我键入selectOneMenu位置错误有关,请确保将正确的路径作为参数传递给上下文。scrollTo(“”);当您设置正确的路径参数时,它确实起作用了吗?您能粘贴您在context.scrollTo方法中尝试的内容吗?selectoneMenu组件是否在另一个容器(如tabView或accordionPanel)中?我按照您的建议粘贴了。selectOneMenu位于panel.scrollTo中需要一个clientId,因此请删除前导冒号。