当我打开Primefaces上必填字段的模态对话框时,如何停止验证

时间:2017-11-17 18:21:52

标签: jsf primefaces jsf-2.2

我无法理解这个特殊情况的JSF生命周期。

我正在尝试使用Primefaces 6.0开发一个简单的模态CRUD,并且我遇到了添加/编辑模式的beheaviour问题。

我想要完成的是:

添加

  1. 点击添加按钮
  2. 添加/编辑对话框
  3. InputText“field1”已禁用= false
  4. 修改

    1. 点击编辑按钮
    2. 添加/编辑对话框
    3. InputText“field1”已禁用= true
    4. 为此,我将“field1”禁用属性链接到我的bean上的 editMode 变量。

      当我点击Add Button时,链接的动作initAddRubro被触发并设置editMode = false(假设默认情况下为true)。

      当我点击没有立即数=真的添加按钮时,会在添加/编辑模式窗口中触发验证( Field1 is required = true )。

      如果我在添加按钮上使用immediate = true,则不会刷新已禁用的属性。

      Faces Bean

      @Component
      @Scope("session")
      public class RubrosFacesBean implements Serializable{
      
      private boolean editMode = true;
      
      
          public String initAddRubro(){
              editMode = false;
              return null;
          }
       }
      

      <p:commandButton value="Add" icon="ui-icon-plusthick"  
      oncomplete="PF('addPanelDialog').show();" style="float: right" 
      immediate="true" ajax="true" action="#{rubrosFacesBean.initAddRubro}"/>
      
      <p:dialog header="Rubro" widgetVar="addPanelDialog" height="200" style="margin-left: auto;" modal="true" id="addPanelDialog" >
      
          <p:messages autoUpdate="true" />
      
          <p:panelGrid columns="2" id="addPanel">         
      
              <h:outputLabel for="field1" value="Field 1: " />
              <p:inputText id="field1" value="#{rubrosFacesBean.field1}" label="Field1" required="true" disabled="#{rubrosFacesBean.editMode}"/>
      
          </p:panelGrid>
      </p:dialog>
      

      感谢任何帮助。 提前谢谢。

      涓.-

1 个答案:

答案 0 :(得分:0)

您可以在添加按钮上保留immediate="true",只需将以下属性添加到其中

update="addPanel"

您可以设置immediate="false"并添加以下属性

process="@this" update="addPanel"

无论您选择哪个选项,在您按下添加按钮后,将跳过验证,将执行Ajax,最后p:panelGrid将更新disable p:inputText vector<string> split_alpha(string to_split) { vector<string> results; string::iterator start = to_split.begin(); string::iterator it = start; ++it; //get rid of any non-alphaneumeric chars at the front of the string while (!isalnum(*start)) { ++start; ++it; } while (it != to_split.end()) { if (!isalnum(*it)) { string to_add = string(start, it); lower_alpha(to_add); results.push_back(to_add); ++it; if (it == to_split.end()) { break; } while (!isalnum(*it)) { ++it; if (it == to_split.end()) { break; } } start = it; ++it; } else { ++it; if (it == to_split.end()) { break; } } } //adds the last word string to_add = string(start, it); lower_alpha(to_add); results.push_back(to_add); return results; } 属性。

不要忘记使用“编辑”按钮执行相同操作。