jsf - JSF 中验证失败的 javascript 回调

标签 jsf primefaces

我有一个模板,当组件验证失败时,我可以在其中向 div 添加 CSS 错误类,它在浏览器上呈现出非常好的效果。

现在,我不需要向组件添加 css 类(this 对我没有帮助),而是我需要更改围绕它的 html 的 css ,这对于 jQuery 来说非常简单,但是我似乎找不到验证失败的 javascript 回调,这可能吗?我也在使用 primefaces(以防它们提供此类功能)。

标记:

<div class="control-group ERROR_CLASS_GOES_HERE_IF_VALIDATION_FAILED">
   <label class="control-label">Input value:</label>
   <div class="controls">
      <h:inputText class=" inputbox" type="text" required="true" /> <!--Component that can fail -->
   </div>
</div>

如果输入文本为空,我需要包装“控制组”的 div 有一个额外的类。我可以把它变成 <h:panelGroup>所以它是一个 JSF 组件,但我仍然不知道该怎么做。 Javascript 似乎更容易,因为我可以这样做:

jQuery("#ID_OF_DIV").addClass("error_class") 

最佳答案

让JSF/EL根据 FacesContext#isValidationFailed() 有条件地打印类.

<div class="control-group #{facesContext.validationFailed ? 'error_class' : ''}">

你只需要保证这个元素被ajax update/render覆盖即可。

另一种方法是 Hook oncomplete任意基于 PrimeFaces ajax 的组件的事件。有一个 args范围内可用的对象又具有 validationFailed属性(property)。例如。 <p:commandButton oncomplete>甚至 <p:ajaxStatus oncomplete> .

<p:ajaxStatus ... oncomplete="if (args &amp;&amp; args.validationFailed) $('#ID_OF_DIV').addClass('error_class')">

关于jsf - JSF 中验证失败的 javascript 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15349979/

相关文章:

css - 如何左对齐 p :datatable filter text box?

java - bean初始化时如何调用数据源?

JSF 在 SVG 之后吞下结束标记

ajax - 如何在过滤primefaces中的惰性数据表后更新其他组件

html - 对话框组件中的primefaces日历问题

jsf - 从闪存中删除JSF消息

jsf - p :commandbutton action doesn't work inside p:dialog

security - 使用容器管理的身份验证时如何在 JSF 中获取登录用户名

javascript - JSF/PrimeFaces 客户端输入操作

java - 不需要的自动填充