h:selectOneMenu 与布尔项不适用于空值

2023-12-25

我正在使用 JSF 2.0、JBoss 7.1.1 Final,并且我在 selectOneMenu 方面遇到以下问题。我希望能够将托管 bean 中的字段设置为 true/false/null。因此,我创建了以下 selectOneMenu:

<h:selectOneMenu value="#{personList.criteria.registrationComplete}" >
    <f:selectItem itemValue="#{null}" itemLabel="Any.." />
    <f:selectItem itemValue="true" itemLabel="Yes"/>
    <f:selectItem itemValue="false" itemLabel="No"/>
</h:selectOneMenu>

现在,如果我选择“任何..”,它会将“false”分配给registrationComplete 字段(布尔值)。所以null 被解释为 false。我还尝试在 selectItem(s) 中使用布尔值,即:

 <h:selectOneMenu value="#{personList.criteria.registrationComplete}" >
    <f:selectItem itemValue="#{null}" itemLabel="Any.." />
    <f:selectItem itemValue="#{true}" itemLabel="Yes"/>
    <f:selectItem itemValue="#{false}" itemLabel="No"/>
</h:selectOneMenu>

我还在faces-config中注册了转换器,如下所示:

<converter>  
    <converter-id>booleanConverter</converter-id>  
    <converter-class>javax.faces.convert.BooleanConverter</converter-class>  
</converter>

并尝试使用它:

<h:selectOneMenu value="#{personList.criteria.registrationComplete}" >
    <f:selectItem itemValue="#{null}" itemLabel="Any.." />
    <f:selectItem itemValue="true" itemLabel="Yes"/>
    <f:selectItem itemValue="false" itemLabel="No"/>
        <f:converter converterId="booleanConverter"/>
</h:selectOneMenu>

但所有这些尝试都导致了同样的行为——当选择 null 值时,它被解释为 false。

我对其进行了调试,并在堆栈跟踪中找到了它发生的位置。在AstValue.setValue(EvaluationContext, Object) line: 204

它调用

ELSupport.coerceToType(value, targetClass)

value 参数为 null,targetClass 为 Boolean。然后这个 coerceToType 方法返回 false。

有什么想法如何解决这个问题吗?谢谢!


这是 Tomcat 和 JBoss 使用的 Apache EL 解析器的典型特征。众所周知,在强制转换时不区分原语及其包装对象表示nullEL 中的值。包装类型始终被视为基元。例如,它在 Glassfish 中运行良好。

您可以通过将以下 VM 参数添加到服务器启动脚本来关闭此 Apache EL 解析器行为:

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

h:selectOneMenu 与布尔项不适用于空值 的相关文章

  • JSF 2.0 Facelets 模板继承

    这是一个扩展的转发JSF 2 0 Facelets 嵌套模板继承 https stackoverflow com questions 5323937 jsf 2 0 facelets nested templates inheritance
  • Primefaces 对话框渲染两次

    我创建了一个 ui component 来像弹出窗口一样使用 因此我可以使用此模板的标准创建很多弹出窗口 该组件只是一个带有两个按钮 取消和提交 的弹出窗口和一个可以覆盖的内容 如下所示
  • 使用普通 HTML 按钮在 JavaScript 中调用托管 bean 方法

    我需要在单击普通 HTML 按钮时调用 JavaScript 中的托管 bean 方法 如果我使用 JSF2 x 和 Primefaces 是否可以做到这一点 对的 这是可能的 Primefaces 提供了一个有用的钩子来用它的组件来做到这
  • ElasticSearch bool should_not 过滤器

    我是elasticsearch的新手 所以我的问题是 bool 过滤器有 3 个部分 must All of these clauses must match The equivalent of AND must not All of th
  • 为什么逻辑连接词和布尔值在 Coq 中是分开的?

    我有 JavaScript Ruby 编程背景 并且习惯了 true false 的工作方式 在 JS 中 true false false true 然后你可以使用这些真 假值 like var a true b false a b So
  • 在 JSF 自定义验证器中区分 ajax 请求和完整请求

    我的验证器需要知道它是完整请求还是 ajax 请求 在我当前的解决方案中 我检查 http 请求标头X Requested With元素 public void validate FacesContext context UICompone
  • JSF 2.x @EJB 依赖注入错误

    因此 正如编程中通常发生的那样 我提出了一个问题 而一个潜在的解决方案又引发了更多问题 和错误 我刚开始使用 servlet JSF 和 EJB 并且遇到了依赖注入错误 这是我原来的问题 JSF h 标签不显示 https stackove
  • 将“NULL”分配给布尔数据类型是否可以接受?

    将 NULL 分配给布尔数据类型是否可以接受 从理论上来说 是的 但这是一件可怕的事情 NULL是一个空指针常量 它被分配给一个指针以使其指向任何内容 ptr NULL now it points to no object anymore
  • 沉默 FullAjaxExceptionHandler

    所以在面对可怕的事情之后javax faces application ViewExpiredException 我不得不去互联网上寻找合适的解决方案 幸运的是 解决方案很容易获得 我继续采用了 OmniFacesFullAjaxExcep
  • jsf文件下载不起作用

    当我点击h commandButton它执行myBean dowanlod 方法 但它不下载任何文件 这是我在支持 bean 中的方法 没有例外 光标变得忙碌 似乎在等待响应 对于这种操作是否有任何额外的配置或者这段代码有什么问题吗
  • 为什么 C# 中 bool 数据类型的大小不是只有 1 位?

    我刚刚学习 C 并深入研究数据类型 为什么不是一个bool数据类型大小为 1 位 看起来它只能保存两个值之一 true 或 false 那么这不是只占用 1 位空间来表示该值吗 是因为值的最小 可寻址 大小是一个字节 8 位 吗 这个帖子
  • JSF 2:如何在同一输入中显示不同的ajax状态?

    当每个字段失去焦点时 我想验证表单中的每个字段 当发生这种情况时 我希望发生以下操作 1 在字段的右侧出现一个图像 一个 gif 表示系统正在检查用户输入 2 完成后 会在右侧出现另一个 gif 取决于输入 例如 success gif 或
  • Ruby on Rails - 复选框未保存到数据库?

    我有一个迁移 它使用布尔值并在其视图中生成一个复选框 但是 无论我单击什么 保存到数据库的值都不会受到影响 我的迁移看起来像这样 def self up create table blogposts do t t string title
  • XML 中定义的布尔值。 Java中如何引用?

    我正在尝试编写一些代码来引用 bool xml 文件并将引用 bool 内的当前值
  • 使用 JSF2 包含上下文根之外的资源

    我目前正在将应用程序从 JSF 1 2 和 Richfaces 3 3 升级到 JSF 2 和 Richfaces 4 我在使用 JSF2 的新功能让我的应用程序包含样式表时遇到问题h 输出样式表 http download oracle
  • h:message 为空时的默认输出

    我正在寻找一种在 JSF 中实现以下切换的方法 div if empty div
  • Perl 中的布尔函数应该返回什么值?

    简短的问题 在 Perl 代码库中一致表示真假的最佳方法是什么 1 0 1 Perl 原生布尔运算符的特殊空字符串 return undef 即空列表 问题背景 我们都知道 Perl 在布尔值方面非常灵活 就像大多数事情一样 例如 Perl
  • Pretty Faces:通用 URL 映射

    使用 Pretty Faces 3 我有一些像这样的映射
  • f:ajax 不工作

    我很难得到f ajax从事某项工作h panelGroup 这就是我正在做的 JSF 代码
  • 简单的布尔表达式测试

    user compiling user for byte code formula 0 P Q P Q P user compiled 2 lines read 768 bytes written 37208 ms yes formula

随机推荐

  • 加载 .DLL 文件并访问其中类的方法?

    我对加载这样的库完全陌生 但这就是我的立场 我有一个自制的 DLL 文件 它非常简单 包括类本身和方法 在加载该库的主程序中 我有 Assembly testDLL Assembly LoadFile C dll test dll 从这里开
  • MongoError:未知修饰符:节点js中的$pushAll

    我在保存模型失败时遇到问题mongo 错误 MongoError 未知修饰符 pushAll 我有一个数组字段subDomains在我的架构中 它将使用子域保存为默认值 如下所示 already Domain instance get av
  • 停止 ListView 所选项目的更改,直到按下按钮

    所以我在尝试创建的应用程序中遇到了问题 我创建了一个示例应用程序来演示该问题 在应用程序中 我试图停止所选项目TableView如果未按回车键 则不会更改TextField 在我的实施中 我得到了StackOverFlow错误 我明白为什么
  • 评估预请求脚本时出错

    我正在尝试通过 Post 请求脚本访问 Postman 中 POST 请求的响应 我在下面添加了这两行Pre request Script let response pm response json console log JSON Res
  • SQLite,如何获取数据库中的所有表名?

    您认为从数据库获取所有表名并将它们添加到列表中的正确方法是什么 现在已经到了这一步了 final ArrayList
  • Laravel 守护进程队列内存泄漏

    我正在使用 laravel 5 1 并使用主管来监视队列作业 队列驱动程序是数据库 program queue process name program name s process num 02d command php var www
  • Swing JPanel 不会重新绘制

    我有一个简单的对象可以扩展JPanel 当 的时候update 在此对象上调用方法 这意味着向面板添加一些标签 然后重新绘制 但是调用 update 方法后标签并没有显示 下面是 update 的代码 public void update
  • 尝试渲染部分时局部变量始终为 nil

    在尝试渲染集合时 我遇到了一个非常奇怪的部分问题 我什至尝试了不同的方法 这是我的部分代码 用于调试 pre pre 这是我使用它的尝试 在每种情况下 部分都会
  • “字母数字”哈希 - A-Z、0-9

    我正在寻找一个可以生成 字母数字哈希 的函数 给定一个源字符串 它会生成一个确定的结果字符串 该字符串可以包含任何字母 a z 或数字 0 9 并且无法通过逆向工程来生成源 这将用于为基于秘密数据的系统生成密码 因此 8 到 12 个字符之
  • 从 Windows 中的另一个 Python 脚本运行 Python 脚本 - Python 3.6.5

    我的本地系统中几乎没有 python py 文件 例如 我将 py 存储在位置 C Users jack Desktop MyFiles 我的文件名是 my prog1 py my prog2 py 和 my prog3 py 现在我想编写
  • 用“纯”C++11 替代方案替换 BGL 顶点迭代?

    我想用纯 C 11 等效项替换顶点或边上的 BGL 迭代 BGL 代码 来自 http www boost org doc libs 1 52 0 libs graph doc quick tour html http www boost
  • 如何在按钮 Codenameone 上执行某些操作后重新加载整个表单

    当我从购物车中删除产品时 我想刷新我的表单我尝试了所有方法但没有成功 有什么方法可以做到这一点吗 我的 Cart 类显示了我的购物车中的产品 当我从购物车中删除产品时 我想刷新整个表单 但不知道该怎么做 我几乎尝试了所有方法 但仍然可以 完
  • Rails 和 Markdown 以及编辑器

    Mark down 编辑器是否已移植到 Rails 应用程序 与此 SO 上使用的相同 解析 Markdown 标记怎么样 大多数所见即所得编辑器应该很容易集成到您的应用程序中 而不需要特定于 Rails 的 gem 插件 这是一个支持 M
  • 如何在android中播放.opus音频文件?

    我正在开发一个应用程序 用于使用谷歌云语音 APi 识别语音并同时录制音频 git link https github com rowntreerob Google speech Opus Recorder我尝试播放录制的 opus 音频文
  • 在 VBScript 中使用 DLL

    我已将 C 代码编译到 DLL 中 但对它们缺乏经验 我的 C 代码包含一个类HelloWorld使用静态方法Print 我想在 VBScript 中使用这个 DLL 来调用该方法Print 我知道这是基础 但我将其用作最终将编译为 DLL
  • 如何修复“错误:监听 EADDRINUSE:地址已在使用 :::5000”未处理的“错误”事件

    我创建了一个nodejs服务器 一个登录应用程序 但是当我尝试节点应用程序时出现错误 她之前不在这里 events js 167 throw er Unhandled error event Error listen EADDRINUSE
  • Maven 故障安全插件失败并显示“无法找到 Surefire-booter”

    截至 8 月 2 日 我们的 Maven 构建在 Jenkins 中突然失败 我们无法解释为什么 Maven 故障安全无法访问其依赖的 booter 插件 有人见过同样的事情吗 INFO failsafe integration test
  • GitHub for Windows/Mac 的“发布”功能是什么?

    Like in GitHub for Windows 的 同步 有什么作用 https stackoverflow com questions 12104513 what does github for windows sync do Gi
  • 如何更改启动的默认 xcode 版本...?

    我的电脑上安装了 xcode 3 2 和 4 0 版本 但我的问题是每当我打开一个项目时 它都会以 xcode 3 2 打开 虽然我可以选择使用 open with gt xcode 4 0 打开我的项目 但我想将默认的 Xcode 更改为
  • h:selectOneMenu 与布尔项不适用于空值

    我正在使用 JSF 2 0 JBoss 7 1 1 Final 并且我在 selectOneMenu 方面遇到以下问题 我希望能够将托管 bean 中的字段设置为 true false null 因此 我创建了以下 selectOneMen