JSF不为h:message呈现span元素

时间:2011-12-10 14:26:07

标签: java jsf

我有一个h:inputText元素和一个h:消息:

<h:form id="cancelForm">
    <h:inputText id="days" />
    <h:message for="days" />
</h:form>

因此,当我打开页面时,JSF会为错误消息呈现“span”元素。还行吧。 当我按下提交时,应用程序转到java并验证字段:

// Some code
if (error) {
    FacesContext.getCurrentInstance().addMessage("days", new FacesMessage("Error message"));
    return error();
}

但是在这个JSF没有呈现h:message的“span”之后。

为什么?

1 个答案:

答案 0 :(得分:3)

days只是inputText组件的简单ID。对于addMessage电话,您需要完整的ID(客户端ID)。

您可以通过查看呈现的HTML源代码获取客户端ID,或者如果Facelet上的所有父命名容器都有ID,请猜测它。通常所有父ID都与:连接为分隔符。

要始终获得100%正确的ID,请将inputComponent绑定到您的支持bean,并在上面显示的代码片段中查询它的ID。

最后,提出一个建议:通常通过验证器和/或转换器完成错误检查和添加面部消息的类型。在辅助bean中执行此操作不应该是您的第一个方法。