【问题标题】:JSF: Is it possible to create a custom converter for thisJSF:是否可以为此创建自定义转换器
【发布时间】:2011-03-31 05:21:39
【问题描述】:

我正在使用 JSF 2.0 顺便说一句
我有一个属性 X 类型为 Integer,默认值为 0。在我的 JSF 页面中,我创建了一个组件,如果 X 为 0,我希望它被禁用,否则启用。

<h:selectBooleanCheckbox disabled="#{X}"/>

我收到了这个错误

Cannot convert 0 of type class java.lang.Integer to class java.lang.Boolean

【问题讨论】:

  • 我不明白你所说的“实体类型整数”是什么意思
  • uhmmm,一个属性X类型整数,就是这个意思

标签: java jsf jsf-2 converter


【解决方案1】:

您的问题非常模糊和模棱两可。我看不出转换器在这里有什么用处。转换器只是在非标准类型和String 类型之间进行转换(EL 具有内置转换(强制)的标准类型是原语,NumberBoolean)。另外,当您说“禁用”和“启用”时,我认为您实际上是指“在组件树中渲染”。

简而言之,你基本上想要&lt;h:someComponent rendered="#{X != 0}" /&gt;

你不能这样做吗?

【讨论】:

  • 还有;一些组件禁用了该属性,使用方式相同。不过,我建议为启用/禁用保留一个布尔变量:&lt;h:commandButton disabled="#{not entityBean.enabledButton}" /&gt;
  • 代表 HTML 表单元素的组件确实有。但这在问题中并不明显。
  • 对不起,我不知道你可以那样做,我最初将它作为rendered=#{X} 并希望它的行为类似于C,其中任何0 都是假的,否则为真。但它给了我一个错误,说它不能从 0 转换为布尔类型,所以我想我需要某种自定义转换器。现在很好用,非常感谢
  • 不客气。有关 EL 中布尔表达式的另一个示例,请参阅this answer
猜你喜欢
  • 2012-03-15
  • 1970-01-01
  • 2011-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-05
  • 1970-01-01
相关资源
最近更新 更多