Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/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弹出窗口中有条件禁用的字段提交的空值_Jsf_Jsf 1.2_Icefaces_Icefaces 1.8 - Fatal编程技术网

为可重用JSF弹出窗口中有条件禁用的字段提交的空值

为可重用JSF弹出窗口中有条件禁用的字段提交的空值,jsf,jsf-1.2,icefaces,icefaces-1.8,Jsf,Jsf 1.2,Icefaces,Icefaces 1.8,我在IceFaces1.8.x(JSF1.2)中开发了一个弹出对话框 该对话框可重复使用(用于帐户创建和修改),并具有一个带有immediate=true的取消按钮(以避免验证)。该对话框在过去遇到了一个问题,在重新打开对话框时会呈现旧值,但现在该问题已按指示修复(,通过将submittedValue设置为null等方法) 我现在面临的问题是特定于有条件禁用的输入字段(),下面是发生的情况: 首先打开弹出窗口(例如创建帐户)并打开此字段 未禁用 然后,用户取消此对话框,由于我们已合并了上述修复(

我在IceFaces1.8.x(JSF1.2)中开发了一个弹出对话框

该对话框可重复使用(用于帐户创建和修改),并具有一个带有
immediate=true
的取消按钮(以避免验证)。该对话框在过去遇到了一个问题,在重新打开对话框时会呈现旧值,但现在该问题已按指示修复(,通过将
submittedValue
设置为null等方法)

我现在面临的问题是特定于有条件禁用的输入字段(
),下面是发生的情况:

  • 首先打开弹出窗口(例如创建帐户)并打开此字段 未禁用
  • 然后,用户取消此对话框,由于我们已合并了上述修复(
    setSubmittedValue(null)
    ),此字段的
    submittedValue
    被设置为null(以及其他字段)
  • 现在,用户打开“修改帐户”对话框,在此字段中禁用。在用户对表单进行任何更改之前,一切看起来都很好
  • 当用户更改表单中的某些字段(比如名称)时,名称字段会按预期进行部分提交,但同时会提交此禁用字段的空值
  • 这个问题可以通过为相关字段在setter方法中添加null检查来解决,但这不是项目所需的解决方案-因为在多个地方可能需要这样做,而且似乎不是一件非常直观的事情

    所以我需要理解:

  • 为什么此禁用字段的setter在 第一名?这也是一个空值。二传手不是 调用任何其他启用的字段
  • 更重要的是,有没有办法解决这个问题(除了在setter中添加null检查)

  • 必须使用
    rendered
    属性来显示/隐藏对话框

    当对话框重新打开时,它会从上一个实例中得到一些剩余值

    解决方案(或解决方法)是使用
    而不是
    呈现的
    属性,这样当对话框关闭时DOM将被完全破坏,当对话框打开时DOM将从头开始创建

    <c:if test="#{bean.enabled}">
        <ice:panelPopup modal="true">
        ...
        </ice:panelPopup>
    </c:if>
    
    
    ...
    

    这样,您甚至不需要使用c:if而不是rendered属性将
    submittedValue
    设置为null

    的修复程序。谢谢