Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 在清除/重置表单时禁用bean验证_Jsf 2_Bean Validation - Fatal编程技术网

Jsf 2 在清除/重置表单时禁用bean验证

Jsf 2 在清除/重置表单时禁用bean验证,jsf-2,bean-validation,Jsf 2,Bean Validation,案例:表单包含用于输入部门名称的输入文本(不能为null或空白),以及用于选择上级部门的下拉列表(可以为null),输入数据并按clear时,backing bean中的clear方法可以正常工作,但当不输入数据并按clear时,名称上的非空bean验证有效并显示验证消息,我想在清除时禁用验证 <h:outputLabel>Parent Department:</h:outputLabel> <ice:selectOneMenu id="parentDepa

案例:表单包含用于输入部门名称的输入文本(不能为null或空白),以及用于选择上级部门的下拉列表(可以为null),输入数据并按clear时,backing bean中的clear方法可以正常工作,但当不输入数据并按clear时,名称上的非空bean验证有效并显示验证消息,我想在清除时禁用验证

<h:outputLabel>Parent Department:</h:outputLabel>
    <ice:selectOneMenu id="parentDepartment" value="#{department.selectedParentDepartment}">               
      <f:selectItem/>
      <f:selectItems value="#{departmentBean.departmentList}" var="dept" 
       itemLabel="#{dept.name}" itemValue="#{dept.id}" />                            
    </ice:selectOneMenu> 
    <h:message for="parentDepartment" style="color:red" />        

<ice:panelGroup>
    <h:commandLink value="Add New" action="#{departmentBean.addOrUpdateDepartment}" />
    <h:commandLink value="Add New" actionListener="#{departmentBean.clear}" />
</ice:panelGroup>
  • 查看代码

    <h:outputLabel>Parent Department:</h:outputLabel>
        <ice:selectOneMenu id="parentDepartment" value="#{department.selectedParentDepartment}">               
          <f:selectItem/>
          <f:selectItems value="#{departmentBean.departmentList}" var="dept" 
           itemLabel="#{dept.name}" itemValue="#{dept.id}" />                            
        </ice:selectOneMenu> 
        <h:message for="parentDepartment" style="color:red" />        
    
    <ice:panelGroup>
        <h:commandLink value="Add New" action="#{departmentBean.addOrUpdateDepartment}" />
        <h:commandLink value="Add New" actionListener="#{departmentBean.clear}" />
    </ice:panelGroup>
    

    部门名称:

    <h:outputLabel>Parent Department:</h:outputLabel>
        <ice:selectOneMenu id="parentDepartment" value="#{department.selectedParentDepartment}">               
          <f:selectItem/>
          <f:selectItems value="#{departmentBean.departmentList}" var="dept" 
           itemLabel="#{dept.name}" itemValue="#{dept.id}" />                            
        </ice:selectOneMenu> 
        <h:message for="parentDepartment" style="color:red" />        
    
    <ice:panelGroup>
        <h:commandLink value="Add New" action="#{departmentBean.addOrUpdateDepartment}" />
        <h:commandLink value="Add New" actionListener="#{departmentBean.clear}" />
    </ice:panelGroup>
    
    上级部门:
    

  • <h:outputLabel>Parent Department:</h:outputLabel>
        <ice:selectOneMenu id="parentDepartment" value="#{department.selectedParentDepartment}">               
          <f:selectItem/>
          <f:selectItems value="#{departmentBean.departmentList}" var="dept" 
           itemLabel="#{dept.name}" itemValue="#{dept.id}" />                            
        </ice:selectOneMenu> 
        <h:message for="parentDepartment" style="color:red" />        
    
    <ice:panelGroup>
        <h:commandLink value="Add New" action="#{departmentBean.addOrUpdateDepartment}" />
        <h:commandLink value="Add New" actionListener="#{departmentBean.clear}" />
    </ice:panelGroup>
    
  • Bean验证

    <h:outputLabel>Parent Department:</h:outputLabel>
        <ice:selectOneMenu id="parentDepartment" value="#{department.selectedParentDepartment}">               
          <f:selectItem/>
          <f:selectItems value="#{departmentBean.departmentList}" var="dept" 
           itemLabel="#{dept.name}" itemValue="#{dept.id}" />                            
        </ice:selectOneMenu> 
        <h:message for="parentDepartment" style="color:red" />        
    
    <ice:panelGroup>
        <h:commandLink value="Add New" action="#{departmentBean.addOrUpdateDepartment}" />
        <h:commandLink value="Add New" actionListener="#{departmentBean.clear}" />
    </ice:panelGroup>
    
    @NotBlank(message=“{name.required}”)
    @大小(最大值=25,消息=“{long.value}”)
    @列(name=“name”,长度=25,可空=false)
    私有字符串名称

  • <h:outputLabel>Parent Department:</h:outputLabel>
        <ice:selectOneMenu id="parentDepartment" value="#{department.selectedParentDepartment}">               
          <f:selectItem/>
          <f:selectItems value="#{departmentBean.departmentList}" var="dept" 
           itemLabel="#{dept.name}" itemValue="#{dept.id}" />                            
        </ice:selectOneMenu> 
        <h:message for="parentDepartment" style="color:red" />        
    
    <ice:panelGroup>
        <h:commandLink value="Add New" action="#{departmentBean.addOrUpdateDepartment}" />
        <h:commandLink value="Add New" actionListener="#{departmentBean.clear}" />
    </ice:panelGroup>
    
  • 支持Bean方法

    <h:outputLabel>Parent Department:</h:outputLabel>
        <ice:selectOneMenu id="parentDepartment" value="#{department.selectedParentDepartment}">               
          <f:selectItem/>
          <f:selectItems value="#{departmentBean.departmentList}" var="dept" 
           itemLabel="#{dept.name}" itemValue="#{dept.id}" />                            
        </ice:selectOneMenu> 
        <h:message for="parentDepartment" style="color:red" />        
    
    <ice:panelGroup>
        <h:commandLink value="Add New" action="#{departmentBean.addOrUpdateDepartment}" />
        <h:commandLink value="Add New" actionListener="#{departmentBean.clear}" />
    </ice:panelGroup>
    
    public void clear(){
    setDepartmentObj(新部门());
    设置选定的父部门(0);
    }

  • <h:outputLabel>Parent Department:</h:outputLabel>
        <ice:selectOneMenu id="parentDepartment" value="#{department.selectedParentDepartment}">               
          <f:selectItem/>
          <f:selectItems value="#{departmentBean.departmentList}" var="dept" 
           itemLabel="#{dept.name}" itemValue="#{dept.id}" />                            
        </ice:selectOneMenu> 
        <h:message for="parentDepartment" style="color:red" />        
    
    <ice:panelGroup>
        <h:commandLink value="Add New" action="#{departmentBean.addOrUpdateDepartment}" />
        <h:commandLink value="Add New" actionListener="#{departmentBean.clear}" />
    </ice:panelGroup>
    

    某些组件有一个
    valueChangeListener
    。试着用那个。但是,我不确定这是否也会触发验证。

    您可以让它刷新整个视图:

    <h:outputLabel>Parent Department:</h:outputLabel>
        <ice:selectOneMenu id="parentDepartment" value="#{department.selectedParentDepartment}">               
          <f:selectItem/>
          <f:selectItems value="#{departmentBean.departmentList}" var="dept" 
           itemLabel="#{dept.name}" itemValue="#{dept.id}" />                            
        </ice:selectOneMenu> 
        <h:message for="parentDepartment" style="color:red" />        
    
    <ice:panelGroup>
        <h:commandLink value="Add New" action="#{departmentBean.addOrUpdateDepartment}" />
        <h:commandLink value="Add New" actionListener="#{departmentBean.clear}" />
    </ice:panelGroup>
    
    <h:commandLink value="Clear" action="#{bean.clear}" immediate="true" />
    
    immediate=“true”
    将跳过所有没有
    immediate=“true”
    的输入组件的处理(和验证)

    <h:outputLabel>Parent Department:</h:outputLabel>
        <ice:selectOneMenu id="parentDepartment" value="#{department.selectedParentDepartment}">               
          <f:selectItem/>
          <f:selectItems value="#{departmentBean.departmentList}" var="dept" 
           itemLabel="#{dept.name}" itemValue="#{dept.id}" />                            
        </ice:selectOneMenu> 
        <h:message for="parentDepartment" style="color:red" />        
    
    <ice:panelGroup>
        <h:commandLink value="Add New" action="#{departmentBean.addOrUpdateDepartment}" />
        <h:commandLink value="Add New" actionListener="#{departmentBean.clear}" />
    </ice:panelGroup>
    
    或者,重新加载页面的一段JavaScript也应执行以下操作:

    <h:outputLabel>Parent Department:</h:outputLabel>
        <ice:selectOneMenu id="parentDepartment" value="#{department.selectedParentDepartment}">               
          <f:selectItem/>
          <f:selectItems value="#{departmentBean.departmentList}" var="dept" 
           itemLabel="#{dept.name}" itemValue="#{dept.id}" />                            
        </ice:selectOneMenu> 
        <h:message for="parentDepartment" style="color:red" />        
    
    <ice:panelGroup>
        <h:commandLink value="Add New" action="#{departmentBean.addOrUpdateDepartment}" />
        <h:commandLink value="Add New" actionListener="#{departmentBean.clear}" />
    </ice:panelGroup>
    
    <h:commandLink value="Clear" onclick="window.location.reload(); return false;" />
    

    因为
    execute
    设置为
    @this
    (顺便说一句,这已经是默认值了,所以您可以忽略它),它不会处理整个表单。

    如果我不想重新加载整个页面,因为我忘了提到页面包含一些树组件,那么通过重新加载整个页面,它们也会被重新加载,这在清除表单时没有意义,我只想重新加载表单,你明白我的意思吗?还有一种情况,在验证空名称后尝试清除时,它不会清除表单,尽管它进入了clear方法。
    <h:outputLabel>Parent Department:</h:outputLabel>
        <ice:selectOneMenu id="parentDepartment" value="#{department.selectedParentDepartment}">               
          <f:selectItem/>
          <f:selectItems value="#{departmentBean.departmentList}" var="dept" 
           itemLabel="#{dept.name}" itemValue="#{dept.id}" />                            
        </ice:selectOneMenu> 
        <h:message for="parentDepartment" style="color:red" />        
    
    <ice:panelGroup>
        <h:commandLink value="Add New" action="#{departmentBean.addOrUpdateDepartment}" />
        <h:commandLink value="Add New" actionListener="#{departmentBean.clear}" />
    </ice:panelGroup>