警告: 'for' attribute cannot be null

本文介绍了解决Seam+JSF组合开发中出现的'for'属性为空错误的方法。该问题源于<s:message>组件在<s:decorate>标签内找不到可编辑组件。解决方案是将布局文件从edit.xhtml更改为display.xhtml。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在用seam+jsf组合开发时,有时遇到[color=red]警告: 'for' attribute cannot be null [/color]错误,结果研究终于解决了,原因是我们经常用模板开发,例如:
<s:decorate id="nameField" template="/layout/edit.xhtml" >
<ui:define name="label">标题</ui:define>
<s:label id="imageCaption" value="#{systemImageHome.instance.caption}" />
</s:decorate>
layout/edit.xhtml这个里面是这样的(大多数)
<s:label styleClass="name #{invalid?'errors':''}">
<ui:insert name="label"/>
<s:span styleClass="required" rendered="#{required}">*</s:span>
</s:label>

<span class="value #{invalid?'errors':''}">
<s:validateAll>
<ui:insert/>
</s:validateAll>
</span>

<span class="error">
<h:graphicImage value="/img/error.gif" rendered="#{invalid}" styleClass="errors"/>
<s:message styleClass="errors"/>
</span>
不知道大家看到没有这个 <s:message>组件,他会寻找父容器中第一个可编辑的组件,但是在<s:decorate>这个里面,现在没有一个可编辑的组件,所以 <s:message>得for就为null,所以如果没有可编辑的组件时应把edit.xhtml改为display.xhtml,这样就没错误了。如果还不懂可以留言,谢谢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值