更新记录时,验证程序不起作用

时间:2015-09-24 13:12:25

标签: validation jsf

抱歉我的英文。按ID更新记录时,验证程序不起作用。如果我通过ajax制作验证器:

<h:inputText id="name" value="#{testMB.instance.name}" required="true">
    <f:validator binding="#{nameValidator}" />
    <f:ajax event="blur" render="nameMessage"/>
</h:inputText>

当我点击Save按钮时:

<h:commandButton type="submit" action="#{testMB.save}" value="Save"/>

验证程序适用于blur事件。如果我第二次点击“保存”按钮,则打印出错误:

Error Rendering View[/pages/test.xhtml]: java.lang.NullPointerException

并重定向到没有ID的网址。如果我删除字段中的ajax blur,那么当我点击按钮时会出现此错误。

如果验证者通过actionListener:

<p:commandButton update="@form" actionListener="#{testMB.save}" value="Save"/>

然后它正在运作。我通过ID更新记录时验证器不工作。我使用表单创建记录,然后这也有效。

我的testMB

public Entity getInstance() {

    if (instance == null) {
        if (id != null) {
            instance = loadInstance();
        } else {
            instance = createInstance();
        }
    }

    return instance;
}

public Entity loadInstance() {
    return (Entity) getDao().findOne(getId());
}

public Entity createInstance() {
    try {
        return entityType.newInstance();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

f:metadata

<f:metadata>
    <f:viewParam name="testId" value="#{testMB.id}"/>
</f:metadata>

为什么不使用常规按钮和ID进行验证?

0 个答案:

没有答案