gpt4 book ai didi

jsf-2 - Jsf 复合组件属性不起作用

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

我正在尝试创建复合组件。我在 composite:interface 部分定义了 4 个属性。这是代码

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

<composite:interface >
<composite:attribute name="id" />
<composite:attribute name="maxlength" />
<composite:attribute name="required"/>
<composite:attribute name="value" />
</composite:interface>

<composite:implementation xmlns:kc="http://java.sun.com/jsf/composite/components/kaysComposite">
<p:inputTextArea id="#{cc.attrs.id}" value="#{cc.attrs.value}" maxlength="#{cc.attrs.maxlength}" required="#{cc.attrs.required}" counterTemplate="{0} / #{cc.attrs.maxlength}" counter="#{cc.attrs.id}_counter"/>

<h:outputText id="#{cc.attrs.id}_counter"/>
</composite:implementation>
</html>

这是我使用组件的页面

     <kc:kaysInputTextArea id="gpAdres" value="#{someBean.variable}"   maxlength="250" required="true"/>
<p:message for="gpAdres" />

奇怪的部分是 required 属性不起作用,但其他属性可以正常工作。我找不到它为什么会这样。

最佳答案

(不是真正的答案,但评论太长了。只是想分享一些可能有帮助的想法......请根据需要进行编辑或替换)

你没有描述你遇到的行为,所以我猜组件内部的值不会随着你传入的值而改变。

我在相同的设置中遇到了类似的问题,但是当我直接传入“true”或“false”时(如您的示例所做的那样),它起作用了。只有当我传递一个 EL 表达式时,组件内部的值才不会再设置,不管表达式的计算结果是什么。在我的例子中,我在属性上设置了一个显式类型,例如type="java.lang.Boolean" 删除这个定义就成功了。

我的猜测是,当强制属性期望 bool 值时,它无法处理 EL 并将其解析为 bool 值的默认值(这似乎是真的,除非 default="false"已设置)。

通过不设置类型,组件似乎可以保留 EL 并将其传递给下一个目标,例如任何 h:tag 的渲染属性。

这似乎不是您的确切问题,但也许它有助于追踪问题?

关于jsf-2 - Jsf 复合组件属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12525420/

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