causes all buttons to call the same method-6ren"> causes all buttons to call the same method-我在 处遇到了一些麻烦导致我的所有按钮(默认类型,而不是 type="button"> 调用相同的 bean 方法,特别是 decryptionBean.readAllBoards 。以下是我认为代-6ren">
gpt4 book ai didi

java - causes all buttons to call the same method

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

我在 <f:event type="preRenderView" listener="#{decryptionBean.readAllBoards}> 处遇到了一些麻烦导致我的所有按钮(默认类型,而不是 type="button"> 调用相同的 bean 方法,特别是 decryptionBean.readAllBoards 。以下是我认为代码的相关部分:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
...
<h:body>
<f:view>
<f:event type="preRenderView" listener="#{decryptionBean.readAllBoards}"/>
</f:view>
...
<p:layout>
<p:layoutUnit id="andon_layout--board1" position="center"
size="50%" styleClass="centered">
<h2>Board 1</h2>
<h:form id="andon_layout--board1--displayForm">
<h:outputLabel for="location_list" value="Board List: " />
<h:selectOneMenu id="location_list" value="Loading..."
required="false">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{decryptionBean.locDropDownArray}" />
</h:selectOneMenu>
<br />
<p:commandButton id="loadBoard1" value="Load board" action="#{decryptionBean.loadBoard}"/>
<h:messages id="b1_messages" />
</h:form>
</p:layoutUnit>
<p:layoutUnit id="andon_layout--board2" position="east"
size="50%" styleClass="centered">
<h2>Board 2</h2>
<h:form id="andon_layout--board2--displayForm">
<h:outputLabel for="location_list" value="Board List: " />
<h:selectOneMenu id="location_list" value="Loading..."
required="false">
<f:selectItem itemLabel="Select One" itemValue="#{decryptionBean.display2}" />
<f:selectItems value="#{decryptionBean.locDropDownArray}" />
</h:selectOneMenu>
<br />
<p:commandButton value="Load board" id="loadBoard2" />
</h:form>
</p:layoutUnit>
</p:layout>
...

loadBoard1 运行 decryptionBean.loadBoard() ,以及decryptionBean.readAllBoards() ,而 loadBoard2 仅运行 decryptionBean.readAllBoards() 。如果我删除 <f:event type="preRenderView" listener="#{decryptionBean.readAllBoards}>行,loadBoard1 和 2 正常运行(调用正确/无方法)。对可能发生的事情有什么想法吗?

提前致谢!

最佳答案

我不知道您期望 preRenderView 事件做什么,但它始终会在 RENDER_VIEW 阶段之前调用(因此得名)。

单击按钮将导致 View 重新渲染,因此当您单击按钮时将始终调用该方法。如果您使用ajax并且仅渲染 View 的一小部分,则不会触发该事件。

如果您不想在每次渲染 View 时都调用该方法,您可以尝试使用 ViewScoped bean 和 @PostConstruct 方法。

关于java - <f :event type ="preRenderView"> causes all buttons to call the same method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17925356/

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