`
wangzl2222
  • 浏览: 148291 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

警告: 'for' attribute cannot be null

阅读更多
在用seam+jsf组合开发时,有时遇到警告: 'for' attribute cannot be null 错误,结果研究终于解决了,原因是我们经常用模板开发,例如:
<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,这样就没错误了。如果还不懂可以留言,谢谢!
1
0
分享到:
评论
1 楼 yinlongfei 2010-04-29  
正好碰到这个问题,谢谢楼主的详细解答。

相关推荐

Global site tag (gtag.js) - Google Analytics