使用请求范围的 bean 函数作为 JSF 中临时呈现按钮的操作

2024-01-28

我在 JSF 中遇到以下基本(也许是愚蠢的)理解问题:

有一个 JSF 页面“testPage.xhtml”:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html">

<f:view>
<h:body>
<h:form>
    <h:commandLink id="B1" value="B1" action="#{testBean.ctrl}"/>

    <h:commandLink id="B2" value="B2" action="#{testBean.ctrl}"
            rendered="#{testBean.renderB2}"/>
</h:form>
</h:body>
</f:view>
</html>

还有一个支持 bean“TestBean.java”:

package test;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean(name="testBean")
@RequestScoped
public class TestBean implements Serializable {

    public static final long serialVersionUID = 1L;

    private boolean renderB2 = false;

    public String ctrl() {
            setRenderB2(true);

            System.out.println("ctrl() is called.");

            return null;
    }

    public boolean getRenderB2() {
            return renderB2;
    }

    public void setRenderB2(boolean renderB2) {
            this.renderB2 = renderB2;
    }
}

所以两个链接都有TestBean.ctrl()作为行动。

仅第一B1被渲染。点击B1导致执行TestBean.ctrl() and B2也被渲染了。

然而,点击B2那么not执行TestBean.ctrl().

这是我的问题:为什么单击时不执行操作方法B2?

大概是因为B2不会再次渲染。但是为什么这会阻止操作方法的执行(由先前渲染的调用)B2 link)?


那是因为rendered在表单提交的应用请求值阶段再次重新评估属性。如果UIInput or UICommand此时组件尚未呈现,那么 JSF 将不会应用该组件的请求值。 IE。这UIInput组件的模型值不会更新,并且UICommand组件的操作将不会被调用。

因为您的 bean 是请求范围的,所以它在显示表单的响应结束时已被丢弃,并且在表单提交请求开始时创建了一个全新的 bean。

您必须保留负责的任何请求范围的属性rendered属性。最简单的方法是通过标记将 bean 放置在视图范围中@ViewScoped并确保您返回null or void来自应该回发到同一视图的操作方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用请求范围的 bean 函数作为 JSF 中临时呈现按钮的操作 的相关文章

  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • 如何通过 javaconfig 使用 SchedulerFactoryBean.schedulerContextAsMap

    我使用 Spring 4 0 并将项目从 xml 移至 java config 除了访问 Service scheduleService 带注释的类来自QuartzJobBean executeInternal 我必须让它工作的 xml 位
  • JSF - 在 ajax 调用上传递参数 - 这段代码有什么问题?

    当我进行 ajax 调用时 我需要将参数传递给 bean 我的豆子是这样的 ManagedBean RequestScoped public class Selector ManagedProperty value param page p
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • 添加到 ArrayList Java

    我是java初学者 需要一些帮助 我正在尝试将抽象数据类型 Foo 它是一个关联列表 转换为字符串 B 的 Arraylist 如何循环遍历该列表并将每个字符串添加到数组中 我可能想多了 但我现在迷失了 我在这里先向您的帮助表示感谢 实例化
  • deepcopy() 非常慢

    我在 Python 中有一个包含大约 1000 个对象 行星系统 恒星 行星 的游戏状态 我需要复制它并在需要时对其应用一堆转换 然而 在大约 1 个请求 秒的情况下 这是占用了我24 63 的运行时间 https i stack imgu
  • 如何列出属于某个VPC的所有资源?

    在我的 AWS 账户中 我的 VPC 很少 我正在尝试找到一种方法来列出位于某个 VPC 下的所有资源 谢谢 您可以通过三种方式完成此操作 AWS CLI AWS 控制台或代码 AWS CLI 您可以使用 AWS CLI 列出与 VPC 关
  • Slim 基本身份验证

    今天是个好日子 我这里有一个有效的精简代码slim basic auth https packagist org packages tuupola slim basic auth当我进入受限目录时 会显示以下内容 一切正常 但我想做的是将其
  • 使用 SqlDataReader 和字符串数组

    我想使用数据读取器读取记录并将结果发送到数组字符串 我使用存储过程从 2 个表中选择数据 string ReqID string ConnectionString ConfigurationManager ConnectionStrings
  • Extjs如何让滚动条出现?

    我需要在表单比包含容器更宽时立即显示滚动条 我在容器上设置了属性 autoScroll true 但它不起作用 有办法得到我需要的结果吗 这是工作示例 http jsfiddle net mQC3B 2 http jsfiddle net
  • 提高 SQL Server 中的 Xquery 性能

    我有一个 Azure SQL 数据库 其中有 1 个表和大量记录 超过 75 000 条 该表包含 XML 数据类型的列 此列如下所示
  • 如何使用maven使用PrimeFaces-5.2.X的jar?

    这个问题看起来很简单 但是根据我的研究 maven 存储库http repo maven apache org maven2 org primefaces primefaces http repo maven apache org mave
  • 为什么测试“NaN == NaN”对于从 pandas 数据帧中删除不起作用?

    请解释如何在 pandas 中处理 NaN 因为以下逻辑对我来说似乎 损坏 我尝试了各种方法 如下所示 来删除空值 我的数据框 我使用它从 CSV 文件加载read csv 有一个列comments 大部分时间都是空的 专栏marked r
  • Elasticsearch 的最大滚动时间

    滚动搜索可以设置的最大滚动时间是多少 文档 https www elastic co guide en elasticsearch client javascript api current api reference html api s
  • Qt 同时使用多种字体

    我想在我的软件中使用三种字体 FontA 包含拉丁文 希腊文 西里尔文字符 FontB 包含韩文字符 FontC 包含日文 汉字 这些字体没有重叠 我想设置我的应用程序 以便立即使用所有这些字体 因为来自不同语言的字符可能会出现在我的软件中
  • 解析数字 ifconfig 标志

    ifconfig 命令输出其以文本和数字格式 虽然我可以找到参考对于数字标志 我找不到任何有关如何解释 屏蔽 数字的指示 qfe2 flags 1100843
  • 线程1:EXC_BAD_ACCESS(代码=1地址=0x0)

    我正在尝试创建一个简单的洗牌和发牌模拟器 我使用一个向量来表示一副 52 张牌 每张牌都由结构表示BitCard其元素的空间是内存 受到位域的限制 但是当构造函数尝试访问向量时 xCode 会抛出一个BAD ACCESS exception
  • 错误:类型“_InternalLinkedHashMap ”不是类型转换中“List ”类型的子类型

    我是 Flutter 新手 我尝试从 10 0 2 2 8000 api members 上的 api 获取数据 但收到错误 例如类型列表动态不是类型 列表 的子类型 我正在遵循颤动的示例 https flutter dev docs co
  • 在数据库中存储用户变量与在asp.net中存储会话

    我正在使用一个 ASP NET 应用程序 该应用程序将大部分数据存储在数据库中而不是会话中 我想知道每种方法的优缺点以及哪种方法更好 例如 您有一个非常繁忙的站点 而不是在会话中存储用户特定变量 而是有一个称为用户数据的数据库表 它可以存储
  • 如何传递参数并将 stdin 从文件重定向到在 gdb 中运行的程序?

    我通常运行一个程序 a out arg1 arg2
  • 实体框架可以处理存储过程中的多个结果集(每个结果集来自连接表)吗?

    在 Linq to SQL 中 我找不到一种简单的方法来处理存储过程返回的多个结果集 其中每个结果集都来自表连接 每个结果集并不直接映射到表 无法改变这种行为 目前看来 使用 DataSet 似乎要简单得多 当前的实体框架或即将推出的实体框
  • 密封案例类是一个好习惯吗?

    密封类的主要原因似乎是 这允许编译器在这些类上进行模式匹配时进行穷举搜索 假设我有用于模式匹配的数据类型 玩具示例 sealed trait Statement case class Assign name String value Int
  • withFormik,将函数作为 props 传递

    我正在使用 Formik 构建用户输入表单 我正在使用 withFormik 来处理我的表单 我目前正在我的组件中传递我的handleSubmit 如下所示 export const CreateForm withFormik mapPro
  • 使用请求范围的 bean 函数作为 JSF 中临时呈现按钮的操作

    我在 JSF 中遇到以下基本 也许是愚蠢的 理解问题 有一个 JSF 页面 testPage xhtml