禁用/删除不存在的验证

时间:2017-06-13 10:44:13

标签: jsf primefaces

我实现了<h:form>来编辑从数据库预加载的Employee数据。预加载工作正常 - 所有字段都填充数据。 <h:form id="editEmployeeForm"><h:form>包围,其中包含<p:dataTable>

当我对Employee数据进行编辑并点击&#34; Speichern&#34; - 按钮时,没有任何反应。 <p:messages>表示我的所有字段都是空的,这显然是错误的验证,因为所有字段都已预先填写。然后,我删除了<p:message>标记中的所有<h:inputText>代码,以检查doSaveEmployeeEdit()是否完全被调用。但没有任何反应 - 控制台中没有错误等。即使是简单的System.out.println()也不会从doSaveEmployeeEdit()打印出来。

我当时所拥有的<p:dialog>以下:

&#13;
&#13;
<h:form id="editEmployeeForm">


  <p:dialog header="Angestellten ändern" id="employeeEditDialog" widgetVar="employeeEditDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="false" closeOnEscape="true">

    <p:outputPanel id="employeeDataEdit" rendered="#{not empty employeeEditController.employee}">
      <h:panelGrid columns="2">
        <p:outputLabel for="usernameEdit" value="Benutzername: " />
        <p:inputText id="usernameEdit" value="#{employeeEditController.employee.username}" disabled="true" />
      </h:panelGrid>
      <p:separator/>
      <h:panelGrid columns="6">
        <p:outputLabel for="firstnameEdit" value="Vorname: " />
        <p:inputText id="firstnameEdit" value="#{employeeEditController.employee.firstName}" />
        <p:outputLabel for="lastnameEdit" value="Nachname: " />
        <p:inputText id="lastnameEdit" value="#{employeeEditController.employee.lastName}" />
        <p:outputLabel for="birthdayEdit" value="Geburtsdatum: " />
        <p:inputMask mask="99/99/9999" id="birthdayEdit" value="#{employeeEditController.employee.birthday}" />
        <p:outputLabel for="locationEdit" value="Wohnort: " />
        <p:inputText id="locationEdit" value="#{employeeEditController.employee.location}" />
        <p:outputLabel for="streetEdit" value="Straße: " />
        <p:inputText id="streetEdit" value="#{employeeEditController.employee.streetName}" />
        <p:outputLabel for="postcodeEdit" value="Postleitzahl: " />
        <p:inputMask id="postcodeEdit" mask="9999?9" slotChar=" " value="#{employeeEditController.employee.postcode}" />
        <p:outputLabel for="phonenumberEdit" value="Telefonnummer: " />
        <p:inputMask id="phonenumberEdit" mask="9?99999999999" slotChar=" " maxlength="12" value="#{employeeEditController.employee.phoneNumber}" />
        <p:outputLabel for="emailEdit" value="Email: " />
        <p:inputText id="emailEdit" validatorMessage="Ungültiges Email-Format!" value="#{employeeEditController.employee.email}">
          <f:validateRegex pattern="^$|^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />
        </p:inputText>
      </h:panelGrid>
      <p:separator/>
      <h:panelGrid columns="6">
        <p:outputLabel for="familyStatus" value="Familienstatus: " />
        <p:selectOneMenu id="familyStatus" value="#{employeeEditController.employee.familyStatus}" style="width:150px">
          <f:selectItem itemLabel="Wähle Familienstatus" itemValue="#{employeeEditController.employee.familyStatus}" />
          <f:selectItems value="#{enumController.familyStatus}" />
        </p:selectOneMenu>
        <p:outputLabel for="Religion" value="Religion: " />
        <p:selectOneMenu id="Religion" value="#{employeeEditController.employee.religion}" style="width:150px">
          <f:selectItem itemLabel="Wähle Religion" itemValue="#{employeeEditController.employee.religion}" />
          <f:selectItems value="#{enumController.religions}" />
        </p:selectOneMenu>
        <p:outputLabel for="Role" value="Rolle: " />
        <p:selectOneMenu id="Role" value="#{employeeEditController.employee.workRole}" style="width:150px">
          <f:selectItem itemLabel="Wähle Arbeitsrolle" itemValue="#{employeeEditController.employee.workRole}" />
          <f:selectItems value="#{enumController.workRoles}" />
        </p:selectOneMenu>
      </h:panelGrid>
      <p:separator/>
      <h:panelGrid columns="3">
        <p:commandButton value="Speichern" action="#{employeeEditController.doSaveEmployeeEdit()}" />
        <p:commandButton value="Neu laden" action="#{employeeEditController.doReloadEmployee()}" />
        <p:commandButton value="Abbruch" onclick="PF('employeeEditDialog').hide()" />
      </h:panelGrid>
    </p:outputPanel>
  </p:dialog>
</h:form>
&#13;
&#13;
&#13;

html或其他什么仍然可以进行验证并且不会调用doSaveEmployeeEdit()的原因是什么?

更新

我创建了一个具有相同输出的新xhtml文件 - 不再进行验证。但我的控制器方法并没有被调用。

我的孩子们.xhtml:

&#13;
&#13;
<h:body>

  <body class="theme-blue sidebar-mini sidebar-collapse">
    <div class="wrapper">
      <div class="content-wrapper" style="min-height: 1126px;">
        <section class="content">
          <div class="box">
            <div class="box-body">

              <h:form id="childForm">
                <p:dataTable id="childTable" var="child" value="#{childController.children}">
                  <p:column headerText="Vorname">
                    <h:outputText value="#{child.firstName}" />
                  </p:column>
                  <p:column headerText="Nachname">
                    <h:outputText value="#{child.lastName}" />
                  </p:column>
                  <p:column headerText="Geburtsdatum">
                    <h:outputText value="#{child.birthday}" />
                  </p:column>
                  <p:column style="width:32px;text-align: center">
                    <p:commandButton update=":childForm:childEdit" oncomplete="PF('childEditDialog').show()" icon="ui-icon-note" title="Bearbeiten">
                      <f:setPropertyActionListener value="#{child}" target="#{childEditController.childEdit}" />
                    </p:commandButton>
                  </p:column>
                </p:dataTable>

                <p:dialog header="Kind bearbeiten" widgetVar="childEditDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="false">
                  <p:messages autoUpdate="true" />
                  <p:outputPanel id="childEdit" style="text-align:center;">
                    <p:panelGrid columns="2" rendered="#{not empty childEditController.childEdit}" columnClasses="label,value">
                      <p:outputLabel id="primParent" value="primäres Elternteil:" />
                      <p:inputText for="primParent" value="#{childEditController.childEdit.primaryParent.id}" disabled="true" />
                      <p:outputLabel id="firstName" value="Vorname:" />
                      <p:inputText for="firstName" value="#{childEditController.childEdit.firstName}" />
                      <p:outputLabel id="lastName" value="Nachname:" />
                      <p:inputText for="lastName" value="#{childEditController.childEdit.lastName}" />
                      <p:outputLabel id="birthDay" value="Geburtsdatum:" />
                      <p:inputText for="birthDay" value="#{childEditController.childEdit.birthday}" />
                      <p:outputLabel id="emgNum" value="Notfallkontakt:" />
                      <p:inputText for="emgNum" value="#{childEditController.childEdit.emergencyNumber}" />
                      <p:outputLabel id="imgName" value="Bildname:" />
                      <p:inputText for="imgName" value="#{childEditController.childEdit.imgName}" />
                      <p:outputLabel for="gender" value="Geschlecht: " />
                      <p:inputText id="gender" value="#{childEditController.childEdit.gender}" disabled="true" />
                      <p:separator />
                      <h:panelGrid columns="3">
                        <p:commandButton value="Speichern" action="#{childEditController.doSaveChild}" update=":childForm:childTable" />
                        <p:commandButton value="Abbruch" onclick="PF('childEditDialog').hide()" immediate="true" />
                      </h:panelGrid>
                    </p:panelGrid>
                  </p:outputPanel>
                </p:dialog>
              </h:form>
            </div>
          </div>
        </section>
      </div>
    </div>
  </body>
</h:body>
&#13;
&#13;
&#13;

我的childEditController:

@Component
@Scope("request")
public class ChildEditController {

@Autowired
private ChildService childService;
private Child childEdit;

public Child getChildEdit() {
    return childEdit;
}

public void setChildEdit(Child childEdit) {
    this.childEdit = childEdit;
}

public void doSaveChild(){
    childEdit = childService.saveChild(childEdit);
    childEdit = null;
}
}

0 个答案:

没有答案