gpt4 book ai didi

java - FacesMessage 不接受浏览器 clientID

转载 作者:行者123 更新时间:2023-12-01 12:50:22 26 4
gpt4 key购买 nike

我有几个<p:messages>应该处理单个 bean 产生的不同类型错误的元素。现在,我从浏览器获取的某个元素的 clientID 始终相同,因为内部没有生成的 id(总共 3 个 ID)。

无论我将哪个 clientID 传递给 FacesContext.addMessage(),我最终都会在每个 <p:messages> 上显示所有错误消息。元素。

浏览器中的一个 clientID:regelDetailAccordion:duoDlgForm2:regelDetail
浏览器中的另一个 clientID:regelDetailAccordion:duoDlgForm1:messagesNeuerFehler
bean 码:FacesContext.getCurrentInstance().addMessage(X, new FacesMessage(...));
哪里X clientID 前面是否(不)是 :和/或仅regelDetail有和没有:在前。全部尝试过:(

对话框-包括:

<ui:insert name="insertDuo"><ui:include src="/includes/duoRegelStmt.xhtml" />
</ui:insert>

显示我所有的 messages 的对话框:

    <p:dialog widgetVar="newDuoDialog" id="newDuoDlg" modal="true">
<p:layout id="layout">
<p:layoutUnit position="west">
<ui:insert name="insertDetailStmt">
<h:form id="stmtDetailForm">
<ui:include src="/includes/stmtDetail.xhtml" /> <!-- left side -->
</h:form>
</ui:insert>
</p:layoutUnit>

<p:layoutUnit position="center">
<ui:insert name="insertDetailRegel">
<ui:include src="/includes/regelDetail.xhtml"/> <!-- right side -->
</ui:insert>
</p:layoutUnit>
</p:layout>
</p:dialog>

对话框右侧显示我的 3 个中的 2 个 messages :

<ui:composition>
<h:panelGrid id="unterheaderUndAccordion">
<h:panelGrid rendered="#{...}" id="regelUnterheader"/>
<p:accordionPanel multiple="true" activeIndex="0,1" id="regelDetailAccordion" rendered="#{...}">
<p:tab>
<h:form id="duoDlgForm1">
<ui:insert name="neuerFehler">
<ui:include src="/includes/neuerFehler.xhtml" />
</ui:insert>

<h:selectOneMenu value="#{regelBean.selectedFehlerCode}" id="selFCode"
onChange="submit()" process="@this" valueChangeListener="#{regelBean.changeFehlerCode}">
<p:ajax event="change" update="duoDlgForm1" />
<f:selectItems ... />
</h:selectOneMenu>
</h:form>
</p:tab>
<p:tab>
<h:form id="duoDlgForm2">
<h:panelGrid>
<p:messages id="regelDetail" showDetail="true" closable="true"/>
</h:panelGrid>
</h:form>
</p:tab>
</p:accordionPanel>
</h:panelGrid>
</ui:composition>

neuerFehler 包含 messages定义如下

<p:messages id="messagesNeuerFehler" showDetail="true" closable="true"/>

在我看来,当我输入 X 的正确值时,只有正确的消息字段才会显示消息,即使其他 messages已更新。如果是这样,我必须输入的正确 clientID 是什么?预先非常感谢,我已经无计可施了:(

Screeny

最佳答案

如果我正确理解问题,您可能会阻止使用 Primefaces 选择器更新某些组件,如下所示:

<h:form>
<h:inputText ... />
<h:inputText ... />
<h:inputText ... styleClass="noupdate" />
<h:inputText ... />
<h:inputText ... />
<p:commandButton ... update="@(form :not(.noupdate))"/>
</h:form>

BalusC 的原始回答 here .

如果这没有帮助,您可以在消息组件上使用 for- 属性吗?在我看来,您希望 FacesMessage 中的 clientid 是消息组件的标识符,而它是出现错误的组件的标识符。抱歉,如果我理解错误。

关于java - FacesMessage 不接受浏览器 clientID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265716/

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