我有一个模板,当组件验证失败时,我可以在其中向 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 && args.validationFailed) $('#ID_OF_DIV').addClass('error_class')">
关于jsf - JSF 中验证失败的 javascript 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15349979/