Java 使用ajax更新另一个字段

Java 使用ajax更新另一个字段,java,events,primefaces,Java,Events,Primefaces,视图: 控制器: <h:form id="ExamrequisitionsCreateForm"> <p:selectOneMenu id="examId" value="#{examrequisitionsController.selected.examId}" required="true" requiredMessage="#{bundle.EditExamrequisitionsRequiredMessage_examId}">

视图:


控制器:

<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.createEntityManager工厂(“系统心脏病学报告”).createEntityManager();
List examsList=em.createNamedQuery(“Exams.findById”)。
setParameter(“id”,id).getResultList();
返回examsList==null?null:examsList.get(0).getPrice();
}
在检查中执行事件
change
后,我尝试更新字段
price

我如何才能做到这一点?

请尝试以下操作:

  • 除去

    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();
    }
    
    
    
  •    <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.createEntityManager工厂(“系统心脏病学报告”).createEntityManager();
    List examsList=em.createNamedQuery(“Exams.findById”)。
    setParameter(“id”,this.selected.examId).getResultList();
    this.selected.price==null?null:examsList.get(0).getPrice();
    }
    
    您的侦听器只需要更新绑定到输入文本的值,而ajax调用只需要更新该值


  • 如果你能就你的问题投票,那将是很棒的。谢谢
       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();
    }