我的问题是,在我的主页,我得到变量capacidade
完美。然后这里是c:forEach
,另一个是"nome"
。当我尝试坚持,然后我得到capacidade
字段填充,但"nome"
属性来null
。我看到如果我在c:forEach
之前推他,那么它就会起作用。但是我需要让他在c:forEach
字段之后。
<s:decorate template="layout/form.xhtml">
<ui:define name="label">capacidade:</ui:define>
<h:inputText size="50" value="#{home.instance.capacidade}" maxlength="100" required="true" />
</s:decorate>
<a4j:outputPanel id="camposPresenca">
<c:forEach items="#{home.presencas}" var="presenca" varStatus="loop">
<s:decorate template="layout/form.xhtml">
<ui:define name="label">Presença #{loop.index + 1}</ui:define>
<rich:calendar enableManualInput="true" value="#{presenca.dataPresenca}" datePattern="dd/MM/yyyy" oninputblur="validarData(this);" required="true"/>
<h:inputText size="100" value="#{presenca.horarioPresenca}" maxlength="250" />
</s:decorate>
</c:forEach>
</a4j:outputPanel>
<s:decorate template="layout/form.xhtml">
<ui:define name="label">Nome:</ui:define>
<h:inputText size="50" value="#{home.instance.nome}" maxlength="100" required="true" />
有人知道怎么解决那个问题吗? 使用<ui:repeat>
代替<c:forEach>
,后者不是组件,并且在页面构建后不是树组件的一部分。
阅读这篇文章。
一般情况:JSTL元素破坏ViewScope
bean
看起来home.getInstance()
不是线程安全的
您可能有更大的问题需要在这里解决,但一个权宜之计是在这里进行布局之前保存实例值。
把它放在你的代码片段前面
<c:set var="home_instance" value = "${home.instance}"/>
并将home.instance
替换为home_instance