gpt4 book ai didi

jsf - 有一些未处理的 FacesMessage,这意味着并非每个 FacesMessage 都有机会呈现

转载 作者:行者123 更新时间:2023-12-01 14:31:12 24 4
gpt4 key购买 nike

我有一个 JSF 2.1 + PrimeFaces 3.3 页面:

<h:form id="particluar">
<p:message id="msg" globalOnly="true" display="text"/>

<h:panelGrid columns="2" id="test">
<h:panelGrid id="panel2" columns="3">
<p:inputText id="name1" value="Student.studentID" required="true"/>
<p:commandButton value="Check Name" actionListener="#{Student.abc}" process="name1" update="panel2" />
<p:message id="msg1" for="name1" display="text"/>
</h:panelGrid>

<p:inputText id="name2" required="true"/>
<p:message id="msg2" for="name2" display="text"/>

<p:inputText id="name3" required="true"/>
<p:message id="msg3" for="name3" display="text"/>

</h:panelGrid>
<p:commandButton value="submit" actionListener="#{Student.xyz}" update="particluar" />
</h:form>

我正在尝试在名称无效时手动添加面孔消息:

public void xyz() {
if (name1.equals("primefaces")) {
FacesContext.getCurrentInstance().addMessage("msg1", new FacesMessage(FacesMessage.SEVERITY_ERROR,"Invalid Name", "Invalid Name"));
}
if (name2.equals("primefaces")) {
FacesContext.getCurrentInstance().addMessage("msg2", new FacesMessage(FacesMessage.SEVERITY_ERROR,"Invalid Name", "Invalid Name"));
}
if (name3.equals("primefaces")) {
FacesContext.getCurrentInstance().addMessage("msg3", new FacesMessage(FacesMessage.SEVERITY_ERROR,"Invalid Name", "Invalid Name"));
}
}

但它们没有出现,服务器日志不断打印以下警告:

There are some unhandled FacesMessages, this means not every FacesMessage had a chance to be rendered

如何在页面中显示它们?

第二个问题,如果我提交带有三个空输入字段的表单,它会在每个 <p:message> 中显示“必填输入错误消息”与 <p:inputText> 相关联.我如何在 <p:message globalOnly="true"> 中显示它们? ?

最佳答案

How do I show them in the page?

您需要指定一个有效的客户端 ID。客户端 ID 与组件 ID 不同。客户端 ID 是您在 JSF 生成的 HTML 输出中看到的任何内容。此外,客户端 ID 应该是输入组件之一,而不是消息组件。

所以,给定一个

<h:form id="particular">
<p:inputText id="name1" />
<p:message id="msg1" for="name1" />
</h:form>

输入组件的客户端 ID particular:name1 (在浏览器中右击页面并执行 View Source 以自行查看)。因此,消息应该附加在这个客户端 ID 上。

context.addMessage("particular:name1", message);

And, a second question, if I submit the form with three empty input fields, it shows "required input error message" in each <p:message> associated with the <p:inputText>. How do I show them in the <p:message globalOnly="true">?

<p:message>不是有效的组件,您应该使用 <p:messages> .

<p:messages id="msg" globalOnly="true" display="text"/>

globalOnly="true"属性意味着只有带有 null 的消息将显示客户端 ID。所以,您应该只添加这样一条消息。

context.addMessage(null, message);

另见:


与具体问题无关,您尝试添加到那里的非全局消息(“无效名称”)实际上应该由完全值得验证者完成。另见 How to perform validation in JSF, how to create a custom validator in JSF举个具体的例子。

关于jsf - 有一些未处理的 FacesMessage,这意味着并非每个 FacesMessage 都有机会呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42239267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com