小编INK*_*INK的帖子

页面刷新验证

我的输入字段<f:ajax>附有一个对象,可以通过按TAB进行验证:

<h:inputText id="input2" value="#{bean.property}">
    <f:validator validatorId="customValidator" />
    <f:ajax execute="@form" render="@this" />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)

如果存在任何验证错误,它们将通过类似的自定义组件显示<h:messages>,输入框将通过自定义设置样式PhaseListener.

我已经实现了一个自定义Faces Validator来跳过验证:

public class CustomValidator {

public void validate(FacesContext context, UIComponent component,
        Object value) throws ValidatorException {
    if (skipValidation(context)) {
        return;
    }
    //Validation code goes here
}
Run Code Online (Sandbox Code Playgroud)

这使我可以根据某些条件跳过bean验证,例如切换到另一个编辑器视图并在支持bean中保存(可能是错误的)数据.

现在,刷新当前页面时出现问题(通过按F5,点击导航栏中的相同链接或类似链接).支持中明显错误的数据按预期正确显示,但也应标记为无效.因此,我需要一种方法来在每个页面加载时调用验证(目前它<f:ajax>仅通过对象调用).

我试着摆弄这样的东西

<f:ajax event="load" execute="editform" render="editform"/>
Run Code Online (Sandbox Code Playgroud)

附属于<h:body>.这是有效的,但网站被绘制了两次 - 如果由于页面首先被绘制而没有邪恶的闪烁,我将不会真正关心,然后通过ajax请求进行验证和更新.

我已经搜索了几个小时来解决这个问题,也许我只是在错误的方向搜索.对于如何解决这个问题,有任何的建议吗?

java ajax jsf

5
推荐指数
1
解决办法
1304
查看次数

标签 统计

ajax ×1

java ×1

jsf ×1