Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/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 按钮,带立即数=“;“真的”;清除当前显示的验证消息_Jsf 2 - Fatal编程技术网

Jsf 2 按钮,带立即数=“;“真的”;清除当前显示的验证消息

Jsf 2 按钮,带立即数=“;“真的”;清除当前显示的验证消息,jsf-2,Jsf 2,我有一个commandButton,可以通过字段上的帮助重新显示页面。 这需要在没有JavaScript的情况下工作。 我不想触发验证,所以我添加immediate=true。 这很好,但是,页面上的任何验证消息都会消失,而我希望它们留在那里 <h:commandButton rendered="#{cc.attrs.helpId!= null}" styleClass="helpButton" value="?" type="submit" action="#{visibleHelp.t

我有一个commandButton,可以通过字段上的帮助重新显示页面。 这需要在没有JavaScript的情况下工作。 我不想触发验证,所以我添加immediate=true。 这很好,但是,页面上的任何验证消息都会消失,而我希望它们留在那里

<h:commandButton rendered="#{cc.attrs.helpId!= null}" styleClass="helpButton" value="?" type="submit" action="#{visibleHelp.toggle(cc.clientId)}" immediate="true" />

...

<h:panelGroup rendered="#{visibleHelp[cc.clientId] != null}" id="#{cc.attrs.name}_helpText" styleClass="help-text">
    <h:outputText value="#{help[cc.attrs.helpId]}"/>
</h:panelGroup>

...

...
...

是这样,还是我遗漏了什么?

这是预期的行为。faces消息在请求范围内。提交表单将创建一个新请求。使用
immediate=“true”
将不会验证不具有该属性的输入组件,因此不会生成faces消息。在同步(非ajax)回发中,由于重新加载整个页面,初始消息“消失”

只需通过ajax提交,这样页面就不会被完全重新加载

<h:panelGroup id="helpButton">
    <h:commandButton rendered="#{cc.attrs.helpId!= null}" styleClass="helpButton" 
        value="?" action="#{visibleHelp.toggle(cc.clientId)}" immediate="true">
        <f:ajax render="helpButton helpSection" />
    </h:commandButton>
</h:panelGroup>

...

<h:panelGroup id="helpSection">
    <h:panelGroup rendered="#{visibleHelp[cc.clientId] != null}" 
        id="#{cc.attrs.name}_helpText" styleClass="help-text">
        <h:outputText value="#{help[cc.attrs.helpId]}"/>
   </h:panelGroup>
</h:panelGroup>

...

诚然,这涉及到隐藏的JavaScript,但没有其他可行的解决方案,或者您必须删除
immediate=“True”
,以便对这些输入组件重新执行验证。

谢谢,我已经完成了ajax部分,但我们的客户正在逐步增强,所以我也需要一个无脚本选项。我认为客户将不得不接受它,大多数用户都有javascript。你声称“没有其他可行的解决方案”有助于我的立场——再次感谢。