【问题标题】:JSF not rendering span element for h:messageJSF 不为 h:message 呈现 span 元素
【发布时间】:2011-12-10 22:40:03
【问题描述】:

我有一个 h:inputText 元素和一个 h:message 元素:

<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”。

为什么?

【问题讨论】:

    标签: java jsf


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 然后。我跟踪了 id 并在 java 端使用 FacesMessage.SEREVERITY_ERROR 创建了更详细的 facesMessage 对象。
    猜你喜欢
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 2019-05-11
    相关资源
    最近更新 更多