重置其他字段的字段值Primefaces

时间:2015-11-15 22:08:22

标签: javascript java ajax jsf primefaces

查看:

<p:selectOneMenu id="examId" value="#{examrequisitionsController.selected.examId}" required="true" requiredMessage="#{bundle.CreateExamrequisitionsRequiredMessage_examId}">
     <f:selectItem itemLabel="Select One" itemValue="#{null}" noSelectionOption="true" />
     <f:selectItems value="#{examsController.itemsAvailableSelectOne}" var="examIdItem" itemValue="#{examIdItem}"/>
     <p:ajax listener="#{examrequisitionsController.getExamPrice()}" update="price" />
</p:selectOneMenu>

<p:inputText id="price" widgetVar="widgetPrice" value="#{examrequisitionsController.selected.price}" title="#{bundle.CreateExamrequisitionsTitle_price}" required="true" requiredMessage="#{bundle.CreateExamrequisitionsRequiredMessage_price}" readonly="#{facesContext.currentPhaseId.ordinal eq 6}" maxlength="7">
     <f:validator validatorId="decimalValidator" />
</p:inputText>

控制器:

public void getExamPrice() {
      EntityManager em = Persistence.createEntityManagerFactory("SystemCardiologyReportsPU").createEntityManager();
      Exams exam = (Exams) em.createNamedQuery("Exams.findById").setParameter("id", this.selected.getExamId().getId()).getSingleResult();
      this.selected.setPrice(exam == null ? null : exam.getPrice());        
}

JavaScript的:

$(document).on('change', '#ExamrequisitionsCreateForm\\:examId_input', function () {   
    if (this.value === '')
        jQuery('#ExamrequisitionsCreateForm\\:price').val('');    
});

我想做一些事情来重置输入的价值&#34;价格&#34;如果&#34;选择一个&#34;在examId字段中选择了选项。

该JS函数有效,但在函数JS重置字段值后,标记ajax会自动自动更新为最后一个有效值。

在Controller中更容易实现它,但是当我选择第一个选项时,ajax不会转向控制器,这就是我尝试使用JS的原因。

或任何禁用&#34;选择一个&#34;在用户使用JS选择任何其他选项之后。

我尝试过类似的事情:

$('select [value=""]').attr('style', 'display:none');

1 个答案:

答案 0 :(得分:0)

我认为examId是一个int。那么请你删除

str

并添加

 <f:selectItem itemLabel="Select One" itemValue="#{null}" noSelectionOption="true" />

我认为null转换器不起作用,因为你的selectOneMenu值是一个int并且无法理解null。您可以删除js脚本。