Jsf 2 按钮,带立即数=“;“真的”;清除当前显示的验证消息
我有一个commandButton,可以通过字段上的帮助重新显示页面。 这需要在没有JavaScript的情况下工作。 我不想触发验证,所以我添加immediate=true。 这很好,但是,页面上的任何验证消息都会消失,而我希望它们留在那里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
<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。你声称“没有其他可行的解决方案”有助于我的立场——再次感谢。