我需要在p:ajax方法中传递一个参数。有一个<p:inputText>
,当我完成输入时,我的输入框必须更新我的p:ajax方法。但我无法在我的方法中发送参数。
我的jsf页面是:
<h:outputText value="#{msg['elicense.contractorFormRenewal.personal.registrationNo']}"/>
<p:inputText id="registrationNo" value="#{renewalContractorBean.registrationNo}" required="false" label="Registration No">
<p:ajaxlistener="#{renewalContractorBean.readLicenseDetailsById(renewalContractorBean.registrationNo)}/>
</p:inputText>
我在bean中的方法是
public void readLicenseDetailsById(String id) {
FirmOrCompany firmOrCompany = contractorRenewableService.readLicenseDetailsById(id);
this.setLicenseName(firmOrCompany.getLicensePersonName());
this.setClassofLicense(firmOrCompany.getLicenseAppliedFor());
}
答案 0 :(得分:1)
没有<p:ajaxListener>
,我不知道您是否错过了您的代码或问题。
考虑到你在问题中犯了一个错误,你的方法应该工作正常,你只是忘了在event=blur
中设置<p:ajax>
,所以一旦你离开inputTextBox就会被调用(意味着用户)已完成打字)
<p:inputText id="registrationNo" value="#{renewalContractorBean.registrationNo}" required="false" label="Registration No">
<p:ajax event="blur" listener="#{renewalContractorBean.readLicenseDetailsById()}/>
</p:inputText>
根据您在bean中所做的更改,检查是否要更新其他组件,您必须在<p:ajax>
,<p:ajax event="blur" update"IdOfTheComponent" ....>
此外,您不必将已经在bean中的属性作为参数传递,您可以在bean中获取它。
最后,在renewalContractorBean
:
public void readLicenseDetailsById()
{
String id = this.registrationNo;
FirmOrCompany firmOrCompany= contractorRenewableService.readLicenseDetailsById(id);
this.setLicenseName(firmOrCompany.getLicensePersonName());
this.setClassofLicense(firmOrCompany.getLicenseAppliedFor());
}
答案 1 :(得分:0)
嗨,你是不是尝试了'=#34; tableid&#34; ?当我从p:dataTable中的列表中删除时,JSF可以更新此dataTable,我希望这会有所帮助。 这是我的代码来更新我的p:datatable
<p:dataTable id="tbl" value="#{borrowerBean.borrowers}" var="bor">
<p:column>
<f:facet name="header">
<h:outputLabel>ID: </h:outputLabel>
</f:facet>
<h:outputLabel value="#{bor.id}"/>
</p:column>
.
.
.
<p:commandButton value="Delete" action="#{user.deleteBorrower(bor.id)}" update="tbl"/>
</p:column>
</p:dataTable>