栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JSF定制组件:支持定制类型的参数,永远不会调用属性设置器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSF定制组件:支持定制类型的参数,永远不会调用属性设置器

这与自定义类型无关。这与使用文字(静态)值和EL以及

attributename="attributevalue"
ins有关
attributename="#{attribute.value}"

此行为是预期的,并且根据规范。EL表达式的属性值

Valueexpression
由设置
UIComponent#setValueexpression()
。也就是说,应该仅在
真正 需要它们时才对它们进行评估,通常是在视图渲染期间。不应在烘烤实例期间 直接
对它们进行评估,
UIComponent
因为那样会破坏动态值表达式的性质(请考虑取决于数据表的当前迭代周期)。

更好的方法是委派可以保存EL值表达式的属性的getter / setter

UIComponent#getStateHelper()
而不是局部属性。该
setValueexpression()
在将最终就是也结束了
StateHelper
。该
UIComponent#getAttributes()
还从解析值
StateHelper

public Image getImage() {   return (Image) getStateHelper().eval("image");}public void setImage(Image image) {    getStateHelper().put("image", image);}

请注意,没有本地属性。因此,当您需要属性的(求值)值时,只需调用getter。

为了实现您的初始功能需求(即set属性的日志记录),您可能希望将logging语句添加到

setValueexpression()
委托给的重写中
super

@Overridepublic void setValueexpression(String name, Valueexpression binding) {    log.debug(....);    super.setValueexpression(name, binding);}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570711.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号