查看:
<h:form id="ExamrequisitionsCreateForm">
<p:selectOneMenu id="examId" value="#{examrequisitionsController.selected.examId}" required="true" requiredMessage="#{bundle.EditExamrequisitionsRequiredMessage_examId}">
<f:selectItems value="#{examsController.itemsAvailableSelectOne}"
var="examIdItem"
itemValue="#{examIdItem}"/>
<f:ajax execute="@this" listener="#{examrequisitionsController.getPriceExam(examItem.id)}" render="ExamrequisitionsCreateForm:price" />
</p:selectOneMenu>
<p:inputText id="price" value="#{examrequisitionsController.selected.price}" title="#{bundle.CreateExamrequisitionsTitle_price}" required="true" requiredMessage="#{bundle.CreateExamrequisitionsRequiredMessage_price}">
</h:form>
控制器:
public BigDecimal getPriceExam(int id) {
EntityManager em = Persistence.createEntityManagerFactory("SystemCardiologyReportsPU").createEntityManager();
List<Exams> examsList = em.createNamedQuery("Exams.findById").
setParameter("id", id).getResultList();
return examsList == null ? null : examsList.get(0).getPrice();
}
我在考试中执行price
事件后尝试更新字段change
。
我该怎么做?
答案 0 :(得分:2)
请尝试以下方法:
删除
<f:ajax execute="@this" listener="#{examrequisitionsController.getPriceExam(examItem.id)}" render="ExamrequisitionsCreateForm:price" />
并添加
<p:ajax listener="#{examrequisitionsController.updatePrice}" update="price"/>
在您的控制器中:
public void updatePrice (){
EntityManager em = Persistence.createEntityManagerFactory("SystemCardiologyReportsPU").createEntityManager();
List<Exams> examsList = em.createNamedQuery("Exams.findById").
setParameter("id", this.selected.examId ).getResultList();
this.selected.price == null ? null : examsList.get(0).getPrice();
}
您的侦听器只需要更新绑定到输入文本的值,并且您的ajax调用只需要更新它。