gpt4 book ai didi

JSF Flash Scope 记住太多消息

转载 作者:行者123 更新时间:2023-12-02 05:31:29 25 4
gpt4 key购买 nike

我的应用程序有一个简单的流程 - 如果您在一个表单上填写并按“保存”(如果一切顺利),您将被重定向到带有列表的第二个 View 。现在我想添加一条消息“您成功添加了一个对象”,但由于我使用的是我记得的重定向,因此我需要使用 Flash 范围。我也这么做了。问题是,在第一次“保存”期间,它仅正确显示 1 条消息,但当我导航回表单并点击“保存”时,它将显示当前消息和旧消息!更奇怪的是,当我(第三次)返回表单并点击“保存”时,我再次只收到 1 条消息(依此类推 1-2-1-2-1-2 等...)。是我做错了什么还是jsf的bug?我的意思是我调用相同的方法并得到不同的结果......

我正在使用 primefaces 和最新的 mojarr:

jsf-api-2.1.1-b04
jsf-impl-2.1.1-b04
primefaces-2.2.1

这是代码(至少是最相关的部分):

SaveForm.xhtml:

    <div id="content-box" class="content-box">
<p:panel id="content-panel" header="Dane raportu"
styleClass="content-panel">
<div class="content-box">
<h:form prependId="false">
<h:panelGrid id="grid" columns="2" styleClass="content-panel">

<!-- some inputs and labels -->

<p:commandButton value="#{msg['thesis.save.button']}"
action="#{thesisBean.saveThesis}" />
</h:panelGrid>
</h:form>
</div>
</p:panel>
</div>

保存论文方法:

public String saveThesis() {
//this creates a Hibernate entity and saves it to the DB
thesisService.addThesis(createThesisEntity());

FacesContext context = FacesContext.getCurrentInstance();
context.getExternalContext().getFlash().setKeepMessages(true);
ResourceBundle bundle = context.getApplication().getResourceBundle(
context, "msg");

context.addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_INFO, "key1",
"key2"));


return "list-theses.xhtml?faces-redirect=true";
}

列表论文.xhtml:

<ui:composition template="/basicTemplate.xhtml">

<ui:define name="content">

<p:growl id="growl" showDetail="true" sticky="false" life="5000" />

<div id="content-box" class="content-box">
<h:form prependId="false" id="table-form">
<p:dataTable var="thesis" value="#{thesisTableBean.theses}"
paginator="true" rows="20">

<p:column styleClass="table-name-column">
<f:facet name="header">
<h:outputText value="#{msg['thesis.table.name.header']}" />
</f:facet>
<h:outputText value="#{thesis.firstName} #{thesis.lastName}" />
</p:column>

<p:column>
<f:facet name="header">
<h:outputText value="#{msg['thesis.table.title.header']}" />
</f:facet>
<h:outputText value="${thesis.title}" />
</p:column>

<p:column styleClass="table-number-column">
<f:facet name="header">
<h:outputText value="#{msg['thesis.table.number.header']}" />
</f:facet>
<h:outputText value="${thesis.number}" />
</p:column>

</p:dataTable>

</h:form>

</div>

</ui:define>

最佳答案

好吧,我在这里找到了一个“解决方案”:http://ocpsoft.com/java/persist-and-pass-facesmessages-over-page-redirects/看起来效果很好。我仍然不知道为什么我的代码不起作用。我的意思是每次都是相同的方法但结果不同......

关于JSF Flash Scope 记住太多消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5868084/

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