当我在 Primefaces 上打开带有必填字段的模态对话框时,如何阻止验证触发

Posted

技术标签:

【中文标题】当我在 Primefaces 上打开带有必填字段的模态对话框时,如何阻止验证触发【英文标题】:How to stop Validation from firing when I open modal dialog with required fields on Primefaces 【发布时间】:2018-05-01 14:27:43 【问题描述】:

对于这种特殊情况,我无法理解 JSF 生命周期。

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

我想要完成的是:

添加

    点击添加按钮 添加/编辑对话框打开 InputText "field1" is disabled=false

编辑

    点击编辑按钮 添加/编辑对话框打开 InputText "field1" is disabled=true

为此,我将“field1”disabled 属性链接到我的 bean 上的 editMode 变量。

当我单击添加按钮时,链接操作 initAddRubro 被触发并设置 editMode = false(假设默认情况下为 true)。

问题是,当我在没有立即 = true 的情况下单击“添加”按钮时,会触发“添加/编辑”模式窗口的验证(Field1 is required=true)。

如果我在 Add Button 上使用 immediate=true,则 disabled 属性不会被刷新。

脸豆

@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"  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>

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

胡安-

【问题讨论】:

嗨,1000 个问题的链接对您没有帮助吗?请阅读How to Ask,特别是minimal reproducible example 部分。代码值一千字…… @Kukeltje 感谢您的回复,我添加了最少的代码来重现错误。如果您需要一些特别的东西来理解这个问题,请询问。问候。 【参考方案1】:

您可以在您的添加按钮上保留immediate="true" 并为其添加以下属性

update="addPanel"

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

process="@this" update="addPanel"

无论你选择什么选项,在你按下 Add 按钮后验证将被跳过,Ajax 将被执行,最后p:panelGrid 将被更新刷新disabledisable 属性。

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

【讨论】:

以上是关于当我在 Primefaces 上打开带有必填字段的模态对话框时,如何阻止验证触发的主要内容,如果未能解决你的问题,请参考以下文章

Primefaces选项卡ajax部分更新错误

填写所有必填字段后使用 Bootstrap Modal

如何防止 JAWS 在必填字段上说“无效条目”?

只需单击一个按钮即可启用必填字段验证

阻止模态按钮提交它所在的表单

在 primefaces 数据表中排序